非黑莫白 发表于 2019-10-18 20:23:27

指针,数组指针,指针数组

本帖最后由 非黑莫白 于 2019-10-18 20:34 编辑

int a=4; https://fishc.com.cn/forum.php?mod=image&aid=116125&size=300x300&key=6ba042a5a5e46a6a&nocache=yes&type=fixnone                      https://fishc.com.cn/forum.php?mod=image&aid=116126&size=300x300&key=33704476913d2141&nocache=yes&type=fixnone在内存中最小管理单位为字节(B),而每一个字节都有地址,如图,int类型为4个字节,变量a占了4格,它的地址为0
int* b=&a;   //&为取地址   定义一个int*类型的变量b(b是指针,指向的数据类型为整型),里面存放了a的地址,又称b指向ahttps://fishc.com.cn/forum.php?mod=image&aid=116127&size=300x300&key=9351692844847f54&nocache=yes&type=fixnone
int a ;https://fishc.com.cn/forum.php?mod=image&aid=116133&size=300x300&key=ef85a01f64563b60&nocache=yes&type=fixnonehttps://fishc.com.cn/forum.php?mod=image&aid=116132&size=300x300&key=486f032f465f60fe&nocache=yes&type=fixnone
**地址和其里面的元素同值**


&a int(*) 指向a 所有数据合一起的整体 四维数组
a int(*) 指向a 粉色 三维数组
a int(*) 指向a 蓝色 二维数组
a int* 指向a 黑色 一维数组
a int 值 白色元素

***它们的地址值一样但含义不一样


在内存地址的计算中+-为偏移量(带类型)

int p=*((int*)(&a+1)-1)

&a+1 ->24int*强制类型转换    使下一次的偏移量减少(int*)(&a+1)-1   ->    23* 取值p为23
数组指针    指向数组的指针   int(*)[]    []的优先级比*高所以一定要加()指针数组    内容为指针的数组   int*[]
char *p=”abcd”;
char str[]=”abcd”;
str=’d’;str“dbcd”      ‘d’ ‘b’ ‘c’ ‘d’‘\0’    把字符串拆成单个字符存储于数组中但是用指针却不能进行修改,因为字符串是常量举例:int a=10;a++;可以10++;不行



页: [1]
查看完整版本: 指针,数组指针,指针数组