int(*ptr)[3]; 这是个数组指针吗? 指针所指向的类型与指针的类型 表达式是分别是什么?

2024-11-28 15:48:45
推荐回答(5个)
回答(1):

首先这个是数组指针,
对于这种类型要怎么看呢,首先看括号里,ptr首先是个指针,然后看吧括号看成一个整体,在看这个指针指向的是一个3个元素的整形数组。
连起来说,ptr是个指向整形数组的指针。
所以指针的类型表达式是int(*)[3]
指向的类型是int [3];

回答(2):

楼上的回答都是不完全对的,概念也不明确。

int(*ptr)[3] 只是一个指向 二维数组的 int型指针而已。

指向二维数组,这个数组的元素是int 型,指针本身只是4个字节的存储,用来保存这个二维数组的首地址而已。

指针所指向的类型 也就是 int* ptr,这是一个int型指针,指向int 数据
指针的类型 指针的的类型也就是指向的元素的类型,指针本身永远只是4个字节,存贮指向元素的地址而已,除非这一个void 型指针。

回答(3):

数组元素全为指针的数组称为指针数组。例如int* ptr[3];
数组名的指针,即数组首元素地址的指针,例如int(*ptr)[3];

回答(4):

int (*ptr)[3]
括号的优先级最高,所以你声明的是一个指针,这个指针指向一个匿名的整型数组,其元素个数为3个

回答(5):

类型就是指向三个整数元素数组 int[3] 的指针

int t[2][3];
int(*ptr)[3];

ptr = t;