ToB企服应用市场:ToB评测及商务社交产业平台
标题:
C++ 指针与一维数组名
[打印本页]
作者:
伤心客
时间:
2022-9-17 08:38
标题:
C++ 指针与一维数组名
C++ 将数组名解释为其
第一个元素的地址
,而对数组名应用地址运算符时,得到的是
整个数组的地址
。从数字上而言,这两个地址相同,无需区分;但从概念上特别是需要运用指针算术时,需要明白两者的区别。如下示例中假设 short 宽 2 字节,系统为 32 位,数组首地址为
0x0028ccf0
,指针变量
ptr
和
ptrc
的区别如下:
变量
ptr
的类型是
short*
,存储的是一个 2 字节内存块的地址,它指向的对象是 short 类型,记号
*ptr
与
tacos[0]
等价。
变量
ptrc
的类型是
short(*)[10]
,存储的是一个 20 字节内存块的地址,它指向的对象是包含 10 个元素的 short 数组,记号
*ptrc
与
tacos
等价。
表示 tacos、&tacos、&tacos[0] 的区别如下:
数组名 tacos 和 &tacos[0] 等效,类型都为 short *,存储的是一个 2 字节内存块的地址,它们指向的对象是 short 类型,但在运用 sizeof() 时,这两者会有区别,sizeof(tacos)=20 而 sizeof(&tacos[0])=4。
表示 &tacos 的类型为 short(*)[10],存储的是一个 20 字节内存块的地址,它指向的对象是包含 10 个元素的 short 数组。
[code]//声明并初始化数组short tacos[10] = {5,2,8,4,1,2,2,4,6,8};//声明并初始化指针一:以下几种赋值结果对ptr等效short *ptr = tacos; //值为0x0028ccf0short *ptr = &tacos[0]; //值为0x0028ccf0//声明并初始化指针二short (*ptrc)[10] = &tacos;//值为0x0028ccf0//访问数组第三个元素cout
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4