【发布时间】:2016-11-28 15:03:13
【问题描述】:
我想知道以下 C 代码是否符合 C99 和/或 C11 标准:
void foo(int bar0, int bar1, int bar2) {
int *bars = &bar0;
printf("0: %d\n1: %d\n2: %d\n", bars[0], bars[1], bars[2]);
}
int main(int argc, char **argv) {
foo(8, 32, 4);
return 0;
}
此代码 sn-p 在使用 Visual Studio 2013 时按预期编译和运行并打印:
0:8
1:32
2:4
【问题讨论】:
-
您是想满足您的好奇心,还是您认为这会解决问题?
-
只是出于好奇,因为可变参数似乎使用这种技术来迭代它的参数。
标签: c pointers parameter-passing c99 c11