[英]what does this mean in C int (*ptr[2])[4];
我想知道定义的含义是什么
int (*ptr[2])[4];
如果我打印“ ptr”的大小,它将显示16。在我的机器上,整数指针的大小也为8,其中整数的大小为4。
如果我将ptr重新命名为,
int (*ptr[2]); then also, size of ptr is 16.
所以问题是
使用左右规则读取此类声明。
int (*ptr[2])[4]
是2个指针数组,指向4个整数的数组。
如果我打印“ ptr”的大小,它将显示16。同样在我的机器上,整数指针的大小为8
这是因为ptr
是2个指针的数组。
Q2 如何初始化PTR?
例如,
int a[4] = { 1, 2, 3, 4};
int b[4] = { 6, 7, 8, 9};
int (*ptr[2])[4] = { &a, &b };
int i;
for(i = 0; i<4;++i){
printf("%d ", (*ptr[0])[i]);//a
}
printf("\n");
for(i = 0; i<4;++i){
printf("%d ", (*ptr[1])[i]);//b
}
printf("\n");
,
int (*ptr[2])[4];
是一个具有2个元素的数组,每个元素的类型为int (*) [4]
,它表示一个指针,该指针指向具有4个元素的数组。
这等于typedef int (* PTR) [4]; PTR ptr[2];
typedef int (* PTR) [4]; PTR ptr[2];
typedef int (*arrayOfNPointers)[N];
So, if this is right, it is a data type describing an array of N pointers to int.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.