#include
int main()
{
char m[2][6] = { "abcd","bcdef" };
char * p =(char*) m;
printf("%c\n", m[1][2]);
printf("%c\n", *(++p)+2);
printf("%c\n", *(p+7));
printf("%c\n", *(*(++p) + 2); // 为什么这样是错误的?
return 0;
}
括号不匹配啊
printf("%c\n", *(*(++p) + 2));
不知道你这个问题是否已经解决, 如果还没有解决的话://1.
void test(int arr[3][5])
{}
//2.
void test(int arr[][])
{}
//3.
void test(int arr[][5])
{}
int main() {
int arr[3][5] = { 0 };
test(arr);
}
//4.
void test(int* arr)
{}
//5.
void test(int* arr[5])
{}
//6.
void test(int(*arr)[5])
{}
//7.
void test(int** arr)
{}
int main() {
int arr[3][5] = { 0 };
test(arr);
}
arr
为首行“一维数组”的地址,数组的地址用数组指针接收。
int(*)[5]
型数组指针指向元素个数为5的一维数组。指针+1访问到下一行,每次跳一行。再解一层引用访问一行里每个元素。