读书人

int (*ptr)[五]这表达的是什么意义

发布时间: 2013-01-05 15:20:39 作者: rapoo

int (*ptr)[5]这表达的是什么意义?
试了下,将5改成4报错!(error C2440: “初始化”: 无法从“int [4][5]”转换为“int (*)[4]”)

int _tmain(int argc, _TCHAR* argv[])
{
int a[4][5] = {
{0x11,0x12,0x13,0x14,0x15},
{0x21,0x22,0x23,0x24,0x25},
{0x31,0x32,0x33,0x34,0x35},
{0x41,0x42,0x43,0x44,0x45}
};
int (*ptr)[5] = a;
int *p = a[0];
//请问a[3][2]的地址,如何用a,ptr,p表示?
int val = 0;
val = *(*(a+3)+2);
val = *(ptr[3]+2);
val = *(p+3*5+2);

//如何用a表示:*(a + 3) + 2
//如何用ptr表示:ptr[3] + 2
//如何用p表示 p + 3 * 5 + 2
return 0;
}

[解决办法]
引用:
int (*ptr)[5] 表示一个指针数组, 数组里面存放的是int型指针

理解错了,int (*ptr)[5]是数组指针,该指针指向”一群“指针,而这”一群“指针中的每个指针又都是指向5个整数的数组。

读书人网 >C语言

热点推荐