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]是数组指针,该指针指向”一群“指针,而这”一群“指针中的每个指针又都是指向5个整数的数组。