对于C语言指针的理解
学习c语言中最难得部分就是指针了
-
指针是什么?
指针本身是一个变量,它存储的是数据在内存中的地址而不是数据本身的值。它的定义如下: -
指针的形式:
类型 *变量名
比如int *p
就是一个整型的指针
char *p
则是一个字符型的指针 -
如何把一个元素的地址给指针p
p=&a
是将变量a的地址给指针p. -
如何得到指针p对应的值
a=*p
是将指针p对应的值给变量a -
指针的算术运算
p++
是将地址++,而不是指针p地址上对应值++
举例:
int a=5;
int *p=&a;
p++;
注:整型在内存中占四个字节
假设原来a的值储存在地址0x0012FF2C
那么当int *p=&a
后p的值则为0x0012FF2C
当p++
后p的值为0x0012FF31
p--
同理
-
简化指针理解
指针就像是一个抽屉,抽屉里装的东西就是指针地址上对应的值 -
指针的输出
printf("%p",p) //输出结果是一个地址(p指向的变量的地址)。
printf("%d",*p) //输出结果是p指向的变量的值。
printf("%d",&p) //输出结果是一个地址(指针p的地址,因为指针也是一个变量所以也有对应地址来存储)