上一篇文章C 和指针_基础篇1说到了指针的定义和取地址符号:
间接操作符
取地址符&*
在这本书中,特别提到了指针的初始化,以及非法指针,刚开始并不明白什么意思;
按照我自己的理解,当用 间接操作符去访问一个值的时候,我是可以再次赋值的,但是实际出来的效果并不是这样的,系统会报出 segmentation fault,
也就是说,改地址可能指向了一个非法地址,由于定义的变量是一个动态的,所以并不能确定最终指向的是哪一个地址:
int *a;
*a=12;
那如果我们按照如下赋值:
int a=15;
printf("%d\n",a);
*(&a)=10;
int *b;
printf("%d\n",a);
printf("%d\n",&a);
打印出来的结果
15
10
6422040
也就是说当变量别分配地址后,可以通过间接访问符访问该地址进行赋值,这时候该变量的地址位置是明确的。
来看看指针的逻辑运算
int a=15;
printf("%d\n",a);
*(&a)=10;
printf("%d\n",a);
printf("%d\n",&a);
printf("%d\n",(&a+1));
int c=sizeof(int);
printf("%d\n",c);
打印的结果:
15
10
6422040
6422044
4
也就是说 取地址逻辑+是在原地址的基础上加上 一个int 的长度;以此类推,其他的类型指针也是加上对应的类型长度