我无法弄清楚为什么这段代码会给出这样的输出。请有人指导一下。
#include<stdio.h>
void main() {
int a[2][2] = { {1,2},{3,4} };
int(**p)[2];
p = a;
for (int i = 0; i < 5; i++) {
printf("%d", *(*p + i));
}
}
解释此代码的输出。
好老C。 间接级别是混合的。
p
是一个指向 2 个整数数组的指针。
a
是一个指向 2 个整数数组的指针。
因此,在 printf 语句中,您试图打印出一个指针,而不是它指向的内容。
此外,当您只有 4 个值时,您正尝试打印 5 个值。 最后你可能想声明
int main()
而不是已弃用的
无效主函数()
试试这个:
#include <stdio.h>
int main()
{
int a[2][2] = { {1,2},{3,4} };
int(*p)[2];
p = a;
for (int i = 0; i < 4; i++) {
printf("%d ", *(*p + i));
}
}