c语言中,指针的优势在哪里?请告知

gao416song 2009-03-12 01:42:40
上课老师说,C语言把指针学好你的C语言就没问题了。
昨天看书刚好看到指针这一章

有个程序
#include<stdio.h>
void main()
{int *p1,*p2,*p,a,b;
scanf("%d,%d",&a,&b);
p1=&a;p2=&b;
if(a<b)
{p=p1;p1=p2;p2=p;}
printf("a=%d,b=%d\n\n",a,b);
printf("max=%d,min=%d\n",*p1,*p2);
}

这个程序运行结果是,输入A和B两个证书,按先大后小的顺序输出A和B。

但是把程序改为:
#include<stdio.h>
void main()
{int p1,p2,p,a,b;
scanf("%d,%d",&a,&b);
p1=a;p2=b;
if(a<b)
{p=p1;p1=p2;p2=p;}
printf("a=%d,b=%d\n\n",a,b);
printf("max=%d,min=%d\n",p1,p2);
}

即把所谓的指针改成普通的变量同样没有什么不可以啊。
这样我就纠结了,指针的优势到底在哪呢?请高手指点
...全文
761 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
rjianfeili 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 haozi168 的回复:]
指针的优势当然就是随便指啦,劣势嘛就是容易越界/迷途.
单个变量看不出来的,你考虑下指针数组,指针的指针,函数指针,结构体指针,索引等.这时候进行还用变量那不是太麻烦了.
[/Quote]顶 我也刚开始进入指针
bao001001 2009-03-25
  • 打赏
  • 举报
回复
simple and efficient.
"simple" means access memory directly.
"efficient" means reduce the memory content movment,for exsample, paremeter parsing by reference.
jinyt 2009-03-25
  • 打赏
  • 举报
回复
学好了指针仅仅表示你刚刚踏入了C语言的门,而不懂指针的话就更不要跟别人说已经学了C语言了。


这句话要 M A R K
final 2009-03-18
  • 打赏
  • 举报
回复
玩几年指针后 再让你忘记指针....你会发现自己像个被折断翅膀的鸟儿
用户 昵称 2009-03-17
  • 打赏
  • 举报
回复
一言难尽那。
Darkneece 2009-03-17
  • 打赏
  • 举报
回复
C如果没有指针,那很多地方就得直接上汇编了
bruce_nie 2009-03-17
  • 打赏
  • 举报
回复
指针是用来操作内存的,玩熟了指针,你对内存会有更清楚的认识...,正因为指针功能强大,C++仍保留指针.
ForestDB 2009-03-16
  • 打赏
  • 举报
回复
优势就是自由,缺点就是太自由。
你起码得有跟其他语言的对比,多实践,才能真正了解优劣。
lwouyang 2009-03-13
  • 打赏
  • 举报
回复
恭喜啦,LZ!有怀疑,有进步!
我相信只要LZ能保持这种学习状态,学什么都不成问题了。
只能说你列的那个例子太水了!(是书上的吗? -- 误人子弟,害人不浅啊!)

看看这个:

int len(char *s)
{
char *p = s;
while(*p != 0)p++;
return((p-s)/sizeof(char)); /* sizeof(char)表示char的大小,当然这里是 1 啦! */
}

指针简洁,远比其他方式(比如数组)要简洁得多,当然一般用C语言都已经是比较简洁的啦!
指针高效,高效是因为构造简单没有损耗,越是大型复杂的软件中越能发挥它的优势,上面这个简单例子看不出!
指针灵活,懒得找例子,LZ只要看看C语言板块的随便哪个例子,那都是把指针用得“活蹦乱跳的”,看不懂不要紧,知道这么回事,先学好再说吧,应该以后你也会的。利用指针在C语言里面可以用来实现很多很多的复杂的程序控制需要,所以C语言就没有了其他高级语言的其他很多特性,因为在C语言里面都化为了指针运用了。

另外,你老师说的什么“C语言把指针学好你的C语言就没问题了。”
误人子弟,千万不要听啊!学好了指针仅仅表示你刚刚踏入了C语言的门,而不懂指针的话就更不要跟别人说已经学了C语言了。
nicky_zs 2009-03-13
  • 打赏
  • 举报
回复
晕。。。。。。。。 指针没有什么优势不优势的。。。。。。。 你甚至可以把一个指针就看成是一个整数。。。。。。 它代表的是你的程序内存中的一个位置。。。。。 这是你程序必须要用到的啊。。。。。 除非你只用寄存器写程序。。。。。
alfredsue 2009-03-13
  • 打赏
  • 举报
回复
有优势不是在任何地方都有优势,你的例子里优势不明显的
gao416song 2009-03-12
  • 打赏
  • 举报
回复
什么区别?
liymzd 2009-03-12
  • 打赏
  • 举报
回复
如果你调用的是函数swap(int *a,int *b) 在里面换a b的值 那么不用指针和用指针 就有区别了
KevinHo 2009-03-12
  • 打赏
  • 举报
回复
你想,C语言的精华就是指针,可见C语言里指针的意义有多重大了!
指针是一个非常灵活的处理内存的好东西,但是很多初学者用不好指针,很容易导致内存出错,譬如内存泄露
总之,是很精华的东西
rabbitlzx 2009-03-12
  • 打赏
  • 举报
回复
指针的优点是 灵活
指针的缺点是 灵活
  • 打赏
  • 举报
回复
你熟悉了指针再讨论这个问题也不晚。
但是C语言的精髓就在于指针,这是没办法的,我不想说它有多少优势,但是存在即合理。很多很火热的库跟语言都是极力屏蔽指针的。
xiaoyong_w 2009-03-12
  • 打赏
  • 举报
回复
你的例子让你没有弄明白指针与普通的变量的区别,是例子的问题, 或者说这个例子不是用来说明他们的区别,但是也不能就因此说明他们一样啊,多找基本书看看就明白了
Qlaiaqu 2009-03-12
  • 打赏
  • 举报
回复
现在没必要问这个问题,你都还没有遇到用指针的情况。
你的两个例子不过是告诉你指针是什么而已
aozhi 2009-03-12
  • 打赏
  • 举报
回复
学过了数据结构,相信你会对指针有一个再认识。
udsking 2009-03-12
  • 打赏
  • 举报
回复
不知道LZ这样做到底意义何在?指针最大的优势就是“动态分配,按需分配”,也就是说我可以根据实际的需求来分配空间,从而避免浪费资源。
加载更多回复(1)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧