学C语言时,学到指针时,理解不了指针,还老是把关于指针的变量弄混,接下来先看看代码,再解释代码中的错误,
解释之前,我想和你们通俗易懂的说说我在学习中经常弄混的几个概念
(下面说的星q 指的是 *q)
地址是什么,指针又是什么,而地址变量和指针变量一样吗,int p;中的p代表什么,int * q;中的q又代表什么, 如果q指向p的地址,星q 与p,q与p又是什么关系?
不知道这些问题,你们在学指针时会不会感到困惑?
首先,先说一下地址与指针的关系,指针就是地址,地址就是一个值,也可以说是一个内存单元的编号,以十六进制的形式存放(比如0x99),所以说,指针也是一个值而已,
针变量也是许多人在学习指针的过程中弄混的,这两个不是同一个东西,前者是一个值,后者是一个变量,变量是可以存放值的,比如int存放的是整形变量,int p;p就是一个整形变量,但是要注意,我们通常说的指针变量简称为指针,但是切记两者不是同一概念,
接下来,说说星q 是个什么玩意,许多人可能把他当成一个变量使用,如果是这样,那岂不是和q是个变量就矛盾了啊,所以说星q 可以理解为一种规定的语法吧,星q就等同于上面的一个整形变量p,即星q =p;下面来看一张图,就很明白了
所以,最后,你知道代码报错的原因了吧,代码中的q是一个地址变量,是存放整形的地址变量,而p是个整形变量,相同点都是变量,q指向了p,q存放了p的地址。
总结一下,
1.指针变量也是一个变量,是存放地址的变量,(有点废话了,哈哈)
2.q不是p,修改q也不影响p的值,同样的,修改p也不会影响q的值
3,在*q出现的地方都可以用p代替,反过来亦然
若有疑问,多多分享哈
相关文章: