指针
指针就是地址的意思
指针变量存放的是地址
普通变量存放的是数据
#include <stdio.h> int main() { char a='F'; int f=123; char *pa=&a; int *pb=&f; printf("a=%c\n",*pa); printf("f=%d\n",*pb); return 0; }
结果
a=F
f=123
可以用*pa间接访问,还可以改名
#include <stdio.h> int main() { char a='F'; int f=123; char *pa=&a; int *pb=&f; printf("a=%c\n",*pa); printf("f=%d\n",*pb); *pa='C'; *pb+=1; printf("now,a=%c\n",*pa); printf("now,f=%d\n",*pb); return 0; }
结果
a=F
f=123
now,a=C
now,f=124
指针的尺寸是四个字节,用四个字节存放一个地址,在其他系统不一定
#include <stdio.h> int main() { char a='F'; int f=123; char *pa=&a; int *pb=&f; printf("sizeof= %d\n",sizeof(pa)); printf("sizeof= %d\n",sizeof(pb)); return 0; }
结果
sizeof= 8
sizeof= 8
我的系统是Windows64位,所以是8
指针存放的地址字节跟他们指向的数据类型没关系
如果不写*,打印出来的是指针的地址
#include <stdio.h> int main() { char a='F'; int f=123; char *pa=&a; int *pb=&f; printf("the addr of a is:%p\n",pa); printf("the addr of b is:%p\n",pb); return 0; }
结果
the addr of a is:000000000061FE0F
the addr of b is:000000000061FE08
避免访问未初始化的指针!!!!!!!!!
浙公网安备 33010602011771号