| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 844 人关注过本帖
标题:关于指针
只看楼主 加入收藏
saya
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-7-19
收藏
 问题点数:0 回复次数:10 
关于指针

请教:我不大会使用指针做程序,很多时候,周围的人都说“这用指针比较方便”,但是我不用指针也可以完成,我不了解指针到底有什么优势,请指教!

搜索更多相关主题的帖子: 指针 
2006-08-16 13:29
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

楼主不喜欢玩指针的话,很适合用JAVA
指针,引用一本书里的话:
千万不要忘记了,当你用一个手指指向别人的时候,你手上的另外三个手指指向了你自己.-------多疑间谍的格言

[此贴子已经被作者于2006-8-16 13:42:58编辑过]

2006-08-16 13:38
saya
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-7-19
收藏
得分:0 
不明白你们的意思

[此贴子已经被作者于2006-8-16 13:45:05编辑过]


2006-08-16 13:44
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

二、三楼的两位高手,不要说些“莫名其妙”的话给楼主MM啊,会吓到她的啊!她吓坏了谁负责啊!

TO:楼主

反正你就强制自己用指针(当然,不是说在每个地方都用,可以找些针对指针的题目去练习),错误犯多了,学的正确的东西也就跟着多了。


我的原则很简单:不做不喜欢的事!
2006-08-16 14:38
saya
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-7-19
收藏
得分:0 

谢谢啊!但是我想举个例子,比如说数组,可以用指针代替,但是用指针代替数组有什么方便之处吗?
我最近在练习用指针代替数组,但是总是要先用数组把程序写出来,然后再一点点改用指针代替,很麻烦而且没意义,因为我不知道指针到底好在哪,所以我不会一开始写程序就用指针。

2006-08-16 16:31
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

引用别人的话:
数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。
指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。

2006-08-16 16:40
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

其实在函数里的数组参数,编译器都是将它退化为相同类型的指针处理的。不然怎么会有
void f(int a[10])
{ printf("&d",sizeof(a));//输出的是4,而不是10。
}

2006-08-16 16:44
wuyufenjr
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-7-20
收藏
得分:0 

用指针,比如你定义一个数组一定要定义他到底有几个无素,而可以通过指针实现内存的分配,随便自己意愿到底要多少元素。我也是刚学完指针,很多题用指针也不怎么编得起来,而且错误百出。呵呵!

2006-08-16 22:21
saya
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-7-19
收藏
得分:0 
可是用指针代替数组不是也要使指针指向一个定义好的数组,而且数组的大小也必须定义
如: int *p;
int a[10];
p=a;
这样的话改变p不是也改变不了了吗,它完全与数组相同,如果说可以通过指针p去访问数组中的任意的元素的话,那不是也可以直接用数组指定就好了吗?
2006-08-17 12:28
ajtomato
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-8-16
收藏
得分:0 

指针可以指向任何一块已经分配的存储空间。
其实,数组本身就是指针 + malloc。个人认为指针更灵活,对于许多问题的解释更清楚,有时,数组反而会让你糊涂。
但是,对于指针一定要注意,要让他指向一个分配的空间。
数组是一个较为顶层的应用,指针是一个底层的操作。顶层的操作让程序的出错概率减小,但应用起来不是很自如。
比如:
unsigned int a[10];
unsigned int *pointer = a;

a[10] = 0;
p[10] = 0;
前一行会检测出语法错误,而后一行不会。这就是顶层的好处。
同时,他也有不足。比如,你发现 a[10] 不够用了,需要 a[20],就不好办了,但你可以用 pointer + malloc/ralloc。

还有,在函数中,其实更容易看出数组的无力。

#include <stdio.h>
#include <string.h>

#define STRING_LENGTH 20
#define STRING_NUMBER 2

void Prinf(unsigned char array[], unsigned int n);

void main()
{
unsigned char str[STRING_NUMBER][STRING_LENGTH];
unsigned char ch = 'A';
unsigned int i = 0;
unsigned int j = 0;

for(i = 0; i < STRING_NUMBER; i ++)
{
for(j = 0; j < STRING_LENGTH; j ++)
str[i][j] = ch;
ch += 1;
}

Prinf(str, STRING_LENGTH * STRING_NUMBER);

while(1)
;
}

void Prinf(unsigned char array[], unsigned int n)
{
unsigned int i = 0;

for(i = 0; i < n; i ++)
{
printf("%c", array[i]);
}
printf("\n");
}

2006-08-17 13:34
快速回复:关于指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040305 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved