【发布时间】:2022-01-24 04:39:43
【问题描述】:
我是 C 新手。我无法理解以下代码中的结果。我使用 goto 并跳转 int a[N] 数组和 int x 的声明。虽然x 没有初始化为10,但我仍然可以访问这些变量。
#include <stdlib.h>
#include <stdio.h>
#define N 4
void printArray(int a[], int length) {
for (int i = 0; i < length; i++) {
printf("%d, ", a[i]);
}
printf("\n");
}
int main(void) {
goto done;
int a[N];
int x=10;
printf("x=%d\n", x);
done:
for (int i = 0; i < N; i++) {
a[i] = i;
}
printArray(a, N);
printf("x=%d\n", x);
return EXIT_SUCCESS;
}
结果
0, 1, 2, 3
x=0
我的问题:
为什么我可以访问这些声明已被跳转的变量? C语言中的变量是如何声明的?似乎变量声明不是逐行运行的。
【问题讨论】:
-
您是否只是想知道 C 程序如何可能会以这种方式运行?或者你想让我们在 C 标准中查找这种行为,看看是否要求以这种方式表现?
-
@DavidGrayson 我对第一个问题很好奇。如果您能同时解释两者,那也很棒。非常感谢。
标签: c