鱼C论坛

 找回密码
 立即注册
查看: 1750|回复: 0

[技术交流] 指针,数组指针,指针数组

[复制链接]
发表于 2019-10-18 20:23:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 非黑莫白 于 2019-10-18 20:34 编辑
int a=4; 

                               
登录/注册后可看大图
                     

                               
登录/注册后可看大图
在内存中最小管理单位为字节(B),而每一个字节都有地址,如图,int类型为4个字节,变量a占了4格,它的地址为0
int* b=&a;   //&为取地址   定义一个int*类型的变量b(b是指针,指向的数据类型为整型),里面存放了a的地址,又称b指向a

                               
登录/注册后可看大图
int a [2][3][4];

                               
登录/注册后可看大图

                               
登录/注册后可看大图

**地址和其里面的元素同值**

&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++;不行




9.png
8.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-4 15:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表