指针就是地址
操作符:
:解引用符(定义指针变量时的不是这个),也叫取值符
&:取地址符
变量地址: &a
一维数组地址:常量名
二位数组地址:行地址a、a+1,列地址a[1]、a[0]+1
访问:读取或者修改内存单元
直接访问:如a=5,直接通过变量访问
间接访问:scanf("%d",&a)通过地址访问
指向:p指向a,指针变量p存放的值是a的地址
定义指针变量(sizeof(指针变量),32位是4,64位是8)
int *p;p是指针变量名,可以存放一个地址,且地址类型是int型。char *p指向的值必须是char型
p=&a;//地址
*p=a的值;//*p表示指向的内存的值。
*(&a)=*p
*后面如果是一个整数,会把整数当成地址,会访问到非法地址
强制地址转换:
如果定义的指针变量与所指向的变量类型不同,可强制转换指针变量,如(int/char/short *)p 如果长的类型指针变量转化为短的类型指针变量,则取短的范围:
如 int a=0x12345678
short *p=(short *)a;
*p=0x1234 short是两个字节,int四个字节
p++=ÿ