马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 非黑莫白 于 2019-10-18 20:34 编辑 在内存中最小管理单位为字节(B),而每一个字节都有地址,如图,int类型为4个字节,变量a占了4格,它的地址为0 int* b=&a; //&为取地址 定义一个int*类型的变量b(b是指针,指向的数据类型为整型),里面存放了a的地址,又称b指向a
**地址和其里面的元素同值**
&a | int(*)[2][3][4] | 指向a | 所有数据合一起的整体 | 四维数组 | a | int(*)[3][4] | 指向a[0] | 粉色 | 三维数组 | a[0] | int(*)[4] | 指向a[0][0] | 蓝色 | 二维数组 | a[0][0] | int* | 指向a[0][0][0] | 黑色 | 一维数组 | a[0][0][0] | int | 值 | 白色 | 元素 |
***它们的地址值一样但含义不一样
在内存地址的计算中+-为偏移量(带类型)
int p=*((int*)(&a+1)-1)
&a+1 -> 24 int* 强制类型转换 使下一次的偏移量减少 (int*)(&a+1)-1 -> 23 * 取值 p为23
数组指针 指向数组的指针 int(*)[] []的优先级比*高所以一定要加() 指针数组 内容为指针的数组 int*[]
char *p=”abcd”;
char str[]=”abcd”;
str[0]=’d’; str “dbcd” ‘d’ ‘b’ ‘c’ ‘d’‘\0’ 把字符串拆成单个字符存储于数组中 但是用指针却不能进行修改,因为字符串是常量 举例: int a=10; a++;可以 10++;不行
|