c语言中的指针感觉好抽象。解决方案
c语言中的指针感觉好抽象。。。
我是大一的新生,现在在用马鸣远的书学习c语言,但是在指针这一章感觉有点难度,c语言中的指针感觉有点抽象啊,不是很好理解,学到现在对指针还是感觉一头雾水。。有人能帮我解释一下指针这个东西吗?谢谢了
------解决方案--------------------
指针可以理解为你现实中的手指,你可以把你的手指指向其它人,指针是有空间的,这个空间就是保存要指向的变量,转为现实就是你的思想,你思想里边想着要指针谁就是了
------解决方案--------------------
楼主,请无需担心,我可以告诉你,每一个高手在学C的时候在看到指针这一章都是一头雾水,没办法,再高明的人也不能仅仅通过文字就让你理解这个玩意,但是为什么那么多人都学会了?很简单,使劲用呗,一边用一边纠结,然后一边翻书一边百度,然后不知不觉就会了。
------解决方案--------------------
你学到指针的时候可以这样试试
把函数及之前的章节重新看一遍,熟练编码
再看指针也许感觉好点
我当时就是
------解决方案--------------------
我个人理解,系统给分配的空间就像是在宇宙的中的一个星球,要是想到达这个星球就必须有传送站,这个传送站就是这个指针。因为他存着去那个星球的地址,可以到达,如果指向这个星球的指针没了,那么我们就找不到去这个空间的地址了,也就是这个空间变成了一个无用空间。如果这个指针找不到要到的空间,他就变成了野指针,肯能会随机找到一个空间,所以最后得数也是随机的,解决它的一个办法就是声明即赋值。
------解决方案--------------------
给你推荐一篇博文吧,希望对你有点帮助:http://blog.****.net/iaccepted/article/details/6741600
------解决方案--------------------
要有这样的概念,一个物体存放的地址和这个地址里面存放的东西。地址就是指针。
------解决方案--------------------
电话号码=&移动
*电话号码=10086
电话号码=&联通
*电话号码=10010
电话号码=&电信
*电话号码=10000
------解决方案--------------------
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
提醒:
“学习用汇编语言写程序”
和
“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
------解决方案--------------------
C语言所有变量都可以理解为内存空间的标识,常规变量存储的就是简单的值;
而指针也是内存空间标识,不过其内存空间存放的是另一个变量的地址,当然另一个变量也可以是常规变量,也可以是指针。
就是这么简单。
------解决方案--------------------
刚开始学指针多少都有些难度,建议你多去画一下指向图,多分析就学得很快的。
简单的说指针实质上就是变量,只不过它里面存的不是一般变量存的值,而是存的变量的地址,只要你弄清了它指向的变量内存,就相当于你直接在用这个变量,只是用法不一样而已(指针要用 *指针 来表示变量的值,而变量直接用变量名就可以表示)
希望对你有用!
我是大一的新生,现在在用马鸣远的书学习c语言,但是在指针这一章感觉有点难度,c语言中的指针感觉有点抽象啊,不是很好理解,学到现在对指针还是感觉一头雾水。。有人能帮我解释一下指针这个东西吗?谢谢了
------解决方案--------------------
指针可以理解为你现实中的手指,你可以把你的手指指向其它人,指针是有空间的,这个空间就是保存要指向的变量,转为现实就是你的思想,你思想里边想着要指针谁就是了
------解决方案--------------------
楼主,请无需担心,我可以告诉你,每一个高手在学C的时候在看到指针这一章都是一头雾水,没办法,再高明的人也不能仅仅通过文字就让你理解这个玩意,但是为什么那么多人都学会了?很简单,使劲用呗,一边用一边纠结,然后一边翻书一边百度,然后不知不觉就会了。
------解决方案--------------------
你学到指针的时候可以这样试试
把函数及之前的章节重新看一遍,熟练编码
再看指针也许感觉好点
我当时就是
------解决方案--------------------
我个人理解,系统给分配的空间就像是在宇宙的中的一个星球,要是想到达这个星球就必须有传送站,这个传送站就是这个指针。因为他存着去那个星球的地址,可以到达,如果指向这个星球的指针没了,那么我们就找不到去这个空间的地址了,也就是这个空间变成了一个无用空间。如果这个指针找不到要到的空间,他就变成了野指针,肯能会随机找到一个空间,所以最后得数也是随机的,解决它的一个办法就是声明即赋值。
------解决方案--------------------
给你推荐一篇博文吧,希望对你有点帮助:http://blog.****.net/iaccepted/article/details/6741600
------解决方案--------------------
要有这样的概念,一个物体存放的地址和这个地址里面存放的东西。地址就是指针。
------解决方案--------------------
电话号码=&移动
*电话号码=10086
电话号码=&联通
*电话号码=10010
电话号码=&电信
*电话号码=10000
------解决方案--------------------
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
提醒:
“学习用汇编语言写程序”
和
“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
------解决方案--------------------
C语言所有变量都可以理解为内存空间的标识,常规变量存储的就是简单的值;
而指针也是内存空间标识,不过其内存空间存放的是另一个变量的地址,当然另一个变量也可以是常规变量,也可以是指针。
就是这么简单。
------解决方案--------------------
刚开始学指针多少都有些难度,建议你多去画一下指向图,多分析就学得很快的。
简单的说指针实质上就是变量,只不过它里面存的不是一般变量存的值,而是存的变量的地址,只要你弄清了它指向的变量内存,就相当于你直接在用这个变量,只是用法不一样而已(指针要用 *指针 来表示变量的值,而变量直接用变量名就可以表示)
希望对你有用!