c语言三维数组怎么寻址,C多维数组中的指针地址

本文详细探讨了C语言中数组表达式在不同上下文中的类型转换规则,特别是如何从数组类型隐式转换为指针类型。例外情况包括在`sizeof`和`&`运算符中的数组表达式,以及作为初始化字符串的文字。举例说明了`zippo`数组在各种表达式中的类型变化,强调了虽然某些表达式具有相同值,但类型却不同。
摘要由CSDN通过智能技术生成

John Bode..

34

当数组表达式出现在大多数上下文中时,其类型将从"N元素数组T"隐式转换为"指向T",其值设置为指向数组中的第一个元素.此规则的例外情况是,数组表达式是sizeof或者address(of &)运算符的操作数,或者数组是在声明中用作初始值设定项的字符串文字.

因此,表达式zippo"衰变"从类型int [4][2](int的2元素数组的4元素数组)到int (*)[2](指向int的2元素数组的指针).类似地,zippo[0]is 的类型int [2]被隐式转换为int *.

给定声明int zippo[4][2],下表显示了涉及zippo和任何隐式转换的各种数组表达式的类型:

Expression Type Implicitly converted to Equivalent expression

---------- ---- ----------------------- ---------------------

zippo int [4][2] int (*)[2]

&zippo int (*)[4][2]

*zippo int [2] int * zippo[0]

zippo[i] int [2] int *

&zippo[i] int (*)[2]

*zippo[i] int zippo[i][0]

zippo[i][j] int

&zippo[i][j] int *

*zippo[i][j] invalid

需要注意的是zippo,&zippo,*zippo,zippo[0],&zippo[0],并且&zippo[0][0]都具有相同的价值; 它们都指向数组的基数(数组的地址与数组的第一个元素的地址相同).但是,各种表达的类型都不同.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值