【发布时间】:2014-04-10 09:16:47
【问题描述】:
在第 6 行而不是 multiArray[0] 上,当我编写 multiArray 时,程序仍然可以工作。不明白为什么。我之前在想 multiArray 是一个指向 multiArray[0] 的指针,它是一个指向 multiArray[0][0] 的指针。所以 multiArray 本身就是一个指向指针的指针。 multiArray[0] 是一个指向 4 元素 int 数组的指针。所以看来 multiArray 和 multiArray[0] 一定是不同的。但在下面的代码中,两者都有效。我编写的打印函数需要一个指向 4 元素 int 数组的指针。所以只有 multiArray[0] 必须工作,而 multiArray 不能工作。但两者都有效。没看懂。
#include <stdio.h>
void printArr(int(*ptr)[4]);
int i, k;
int main(void){
int multiArray[3][4] = { { 1, 5, 2, 4 }, { 0, 6, 3, 14 }, { 132, 4, 22, 5 } };
int(*point)[4] = multiArray[0];
for (k = 0; k < 3; k++)
{
printArr(point++);
}
getchar();
}
void printArr(int(*ptr)[4]){
int *temp = (int *)ptr;
for (i = 0; i < 4; i++)
{
printf("%d ", *temp);
temp++;
}
puts("\n");
}
【问题讨论】:
-
我能知道您使用的是哪个编译器吗????因为您的代码无法在我的机器上编译(使用 GCC)。
-
Visual Studio 2013 速成版