【发布时间】:2015-03-05 21:36:40
【问题描述】:
我找到了一个计算数字平方的函数:
int p(int n) {
int a[n]; //works on C99 and above
return (&a)[n] - a;
}
它返回 n2 的值。问题是,它是如何做到的?经过一番测试,我发现(&a)[k]和(&a)[k+1]之间是sizeof(a)/sizeof(int)。这是为什么呢?
【问题讨论】:
-
你有链接到你找到这些信息的地方吗?
-
int p(n)?这甚至可以编译吗? -
这太棒了,现在再也不用它了,改用 n*n...
-
或更好:
int q(int n) { return sizeof (char [n][n]); } -
@ouah 假设这个问题是指codegolf.stackexchange.com/a/43262/967 我没有使用
sizeof的原因是为了保存字符。其他人:这是故意模糊的代码,是未定义的行为,@ouah 的回答是正确的。
标签: c arrays pointers c99 variable-length-array