c语言为什么要用指针?它有什么用?

harryzm 2008-06-19 11:18:36
c语言为什么要用指针?它有什么用?

它不就是指向内存的一个地址吗,为什么变量不能代替呢?
...全文
1410 42 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangchencf 2008-08-05
  • 打赏
  • 举报
回复
你说对了,变量就是符号,符号就是地址。而指针变量就是赋予你操作这些地址的工具。
[Quote=引用 41 楼 hw80520997 的回复:]
我也来说两句吧,如果指针那么好的话那还要变量做什么啊?设计的时候直接把变量做成像指针那样指向内存地址不就可以了吗
[/Quote]
hw80520997 2008-08-02
  • 打赏
  • 举报
回复
我也来说两句吧,如果指针那么好的话那还要变量做什么啊?设计的时候直接把变量做成像指针那样指向内存地址不就可以了吗
sc_gw 2008-06-23
  • 打赏
  • 举报
回复

[] Node *axnode = (NODE *)malloc(sizeof(NODE));
if (NULL == axnode)
{
return FALSE;
}
[]
bioruan 2008-06-23
  • 打赏
  • 举报
回复
个人认为compiler在汇编过程中应该可以自动区分究竟是用pointer,还是copy by reference,还是copy by value最合适的问题.何必非要麻烦operator呢?说不定C++++那一个版本的语言就不要指针了. 还有啊,JAVA就没有指针哦,不是照样可以写程序吗...
ForestDB 2008-06-21
  • 打赏
  • 举报
回复
因为需要直接操作地址。
lin_style 2008-06-21
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 liangchencf 的回复:]
指针并不是因为C语言才有的。寻址、执行这么一个过程就是计算机的基本原理。尽管很多高级语言都没有指针,但程序的运行就是靠着不停的寻址来运行的。可执行的机器码、全局变量、局部变量和程序返回地址等这三块二进制数都存放在内存中。而只有cpu具有计算功能,他的计算实际上非常弱,每次只能算一个非常简单的算术运算或逻辑运算(但运算速度惊人)。要把程序代码和变量从内存传到cpu就需要通过找寻数据在内存中的地址,然后通过…
[/Quote]

精辟。这才是一个实用主义

相比飞雪,飞雪有点理论化。。。
antss 2008-06-21
  • 打赏
  • 举报
回复
弄本简单的数据结构看看,就知道为什么需要指针了。
lwouyang 2008-06-21
  • 打赏
  • 举报
回复
没有指针的C语言将是死水一滩
lwouyang 2008-06-21
  • 打赏
  • 举报
回复
忘了是谁说的一句话:
指针是C语言的灵魂!
个人觉得还有些道理吧.
xkyx_cn 2008-06-20
  • 打赏
  • 举报
回复
多给你发了杆超级牛的枪

[Quote=引用楼主 harryzm 的帖子:]
c语言为什么要用指针?它有什么用?

它不就是指向内存的一个地址吗,为什么变量不能代替呢?
[/Quote]
xkyx_cn 2008-06-20
  • 打赏
  • 举报
回复
多给你发了杆超级牛的枪

[Quote=引用楼主 harryzm 的帖子:]
c语言为什么要用指针?它有什么用?

它不就是指向内存的一个地址吗,为什么变量不能代替呢?
[/Quote]
stars_eyes 2008-06-20
  • 打赏
  • 举报
回复
说两句,不对的地方,楼下的指正。
指针就是地址,另外还有指针变量,也就是存放地址的变量。
平时使用的别的变量(指的指针变量以外的变量),就是用变量名字代表了它所在的空间,本质还是到这个地址去访问;而用指针变量访问,就是直接访问这个空间了,因此更高效。
就说这么多,后面的补充、修正,呵呵
baihacker 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 steedhorse 的回复:]
指针就是变量啊。。。。。
[/Quote]

指针变量是从指针本身的意义来说,
指针是一种类型
这种类型的对象有一种*运算,可以把指针本身的值当地址,指针指向的类型作为类型,去解释这个地址的内容.
这种运算也叫"非关联化"


这些都仅仅是从类型,语义来讲.


站在高一层:
"去操作另一个对象",才是其存在的思想来源.
显式的是指针
隐式的是引用(使用C++中引用的概念).

而他们都是引用(使用类型系统的概念).

xkyx_cn 2008-06-20
  • 打赏
  • 举报
回复
把10个MM叫来排队

[Quote=引用 12 楼 bad_alloc 的回复:]
你要和10个mm相亲,给10个mm每个人发一张照方便呢,还是把你本人打包装箱10mm都发一遍方便?
[/Quote]
晨星 2008-06-20
  • 打赏
  • 举报
回复
指针就是变量啊。。。。。
liangchencf 2008-06-20
  • 打赏
  • 举报
回复
指针并不是因为C语言才有的。寻址、执行这么一个过程就是计算机的基本原理。尽管很多高级语言都没有指针,但程序的运行就是靠着不停的寻址来运行的。可执行的机器码、全局变量、局部变量和程序返回地址等这三块二进制数都存放在内存中。而只有cpu具有计算功能,他的计算实际上非常弱,每次只能算一个非常简单的算术运算或逻辑运算(但运算速度惊人)。要把程序代码和变量从内存传到cpu就需要通过找寻数据在内存中的地址,然后通过数据总线和地址总线传进cpu运算(那两个总线就是实实在在的电线!)。所以如果你了解了程序的机构就可以根据地址去做很多很灵活甚至是很诡异的操作。不仅如此,你想做的所有操作也都离不开地址。
即使让你自己去设计一个语言,你会发现,类似指针这么个概念也是不可缺少的,离开它计算机就无法工作了。。。
可以没有指针变量这么个东西,但是指针,地址还是会有的。
bad_alloc 2008-06-20
  • 打赏
  • 举报
回复
你要和10个mm相亲,给10个mm每个人发一张照方便呢,还是把你本人打包装箱10mm都发一遍方便?
na_he 2008-06-20
  • 打赏
  • 举报
回复
就是c预言的道吧,结合os的设计,你可能有深刻的理解了。
zyw052553 2008-06-20
  • 打赏
  • 举报
回复
指针不是必需的,如Java就消除了指针
但是指针能够提高效率,方便程序员对系统底层操作
ouyh12345 2008-06-20
  • 打赏
  • 举报
回复
堆和栈还是有区别的,而且挺大
加载更多回复(22)

70,025

社区成员

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

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