c语⾔声明指针变量的⽅法,C语⾔指针变量的声明
原标题:C语⾔指针变量的声明
在 C 语⾔中,变量的地址往往都是编译系统⾃动分配的,对我们⽤户来说,我们是不知道某个变量的具体地址的。所以我们定义⼀个p,把普通变量 a 的地址直接送给指针变量 p 就是 p = &a;这样的写法。
对于指针变量 p 的定义和初始化,⼀般有两种⽅式,这两种⽅式,初学者很容易混淆,因此这个地⽅没别的⽅法,就是死记硬背,记住即可。
⽅法 1:定义时直接进⾏初始化赋值。
unsigned char a;
unsigned char *p = &a;
⽅法 2:定义后再进⾏赋值。
unsigned char a;
unsigned char *p;
p = &a;
⼤家仔细看会看出来这两种写法的区别,它们都是正确的。我们在定义的指针变量前边加了个*,这个*p 就代表了这个 p 是个指针变量,不是个普通的变量,它是专门⽤来存放变量地址的。此外,我们定义*p 的时候,⽤了 unsigned char 来定义,这⾥表⽰的是这个指针指向的变量类型是 unsigned char 型的。
指针变量似乎⽐较好理解,⼤家也能很容易就听明⽩。但是为什么很多⼈弄不明⽩指针呢?因为在 C 语⾔中,有⼀些运算和定义,他们是有区别的,很多同学就是没弄明⽩它们的区别,指针就始终学不好。这⾥我要重点强调两个区别,只要把这两个区别弄明⽩了,起码指针变量这部分就不是问题了。这两个重点现在⼤家死记硬背,直接记住即可,靠理解有可能混淆概念。
第⼀个重要区别:指针变量 p 和普通变量 a 的区别。
我们定义⼀个变量 a,同时也可以给变量 a 赋值 a = 1,也可以赋值 a = 2。
我们定义⼀个指针变量 p,另外还定义了⼀个普通变量 a=1,普通变量 b=2,那么这个指针变量可以指向 a 的地址,也可以指向 b 的地址,可以写成 p = &a,也可以写成 p = &b,但就是不能写成 p = 1 或者 p = 2 或者 p = a,这三种表达⽅式都是错的。
因此这个地⽅,不要看到定义*p 的时候前边有个 unsigned char 型,就的赋值 p=1,这个只是说明 p 指向的变量是这个 unsigned char 类型的,⽽ p 本⾝,是指针变量,不可以给它赋值普通的值或者变量,后边我们会直接把指针变量称之为指针,⼤家要注意⼀下这个⼩细节。
前边这个区别似乎⽐较好理解,还有第⼆个重要区别,⼀定要记清楚。
第⼆个重要区别:定义指针变量*p 和取值运算*p 的区别。
“*”这个符号,在我们的 C 语⾔有三个⽤法,第⼀个⽤法很简单,乘法操作就是⽤这个符号,这⾥就不讲了。
第⼆个⽤法,是定义指针变量的时候⽤的,⽐如 unsigned char *p,这个地⽅使⽤“*”代表的意思是 p 是⼀个指针变量,⽽⾮普通的变量。
还有第三种⽤法,就是取值运算,和定义指针变量是完全两码事,⽐如:
unsigned char a = 1;
unsigned char b = 2;
unsigned char *p;
p = &a;
b = *p;
指针变量本身有地址吗这样两步运算完了之后,b 的值就成了 1 了。在这段代码中,&a 表⽰取 a 这个变量的地址,把这个地址送给 p 之后,再⽤*p 运算表⽰的是取指针变量 p 指向的地址的变量的值,⼜把这个值送给了 b,最终的结果相当于 b=a。同样是*p,放在定义的位置就是定义指针变量,放在执⾏代码中就是取值运算。
这两个重要区别,⼤家可以反复阅读三四遍,把这两个重要区别弄明⽩,指针的⼤门就顺利的踏进去⼀只脚了。⾄于详细的⽤法,我们后边⽤得多了就会慢慢熟悉起来了。
责任编辑:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。