二级指针和数组

本文深入探讨了数组名在C/C++编程中的三种特殊用法:作为长度的sizeof运算符的应用,取数组地址及指针指向数组的机制,以及数组初始化与引用的创建。此外,还详细解释了数组在函数调用、栈帧组织、二级指针操作以及内存布局(如小端和大端存储)中的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组名的三个特殊话

数组名的三个例外 
1.数组名做长度 sizeof(ar) 只关心大小 等于长度 
2.取数组地址 指针指向数组地址 数组地址= 大小加类型 int *p[10]	数组 是个空间 每个空间放指针 时指向int的指针 p标识符 数组名 放的整形类型的地址 存放地址 int (*s)[10]	指针 指向数组 十个空间 每个空间放的整形 s标识符 s开辟四个地址 存放变量 
3.数组初始化一个引用 数组名=大小加类型 int ar[10] ={0}; int (&b)[10] = ar; 剩下都是首地址

下一个函数调用时,空间全部覆盖成cccccc
栈帧 于函数
从底到顶  从高到低
函数变量 从高地址到低地址赋值(从下到上)
数组 从上到下 是赋值的从左到右  和参数入栈一样 从(从右向左 从下到上)(从左到右)从上到下

二级指针和数组的关系

指针都有两个值 一个是自身的值 一个是指向的值
p = 地址(自身的值)
*p = 数值(指向的值)
**p =&p 二级指针指向一级指针的地址

a = 0012ff00
*a =10
&a = 0012fe08

p=0012fe08
*p=0012ff00

*s =p
**s = *p = a;

int a = 0x123456;
int *ip =&a;
char *cp = &a;

cp == char *
&a  == int *

小端存储 高地址存高位
大端 高地址存低位
char指针 自增+1
int 指针 自增+4

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值