【发布时间】:2015-07-05 21:09:15
【问题描述】:
我正在阅读 K.N.King 的 C Programming: A Modern Approach 来学习 C 编程语言,当前章节讲述了函数以及数组参数。说明可以使用这样的结构来表示数组参数的长度:
1.
void myfunc(int a, int b, int[a], int[b], int[*]); /* prototype */
void myfunc(int a, int b, int n[a], int m[b], int c[a+b+other_func()]) {
... /* body */
}
2.
void myfunc(int[static 5]); /* prototype */
void myfunc(int a[static 5]) {
... /* body */
}
所以问题是:
a. 示例 1 中的构造纯粹是装饰性的还是它们对编译器有影响?
b. 在这种情况下,static 修饰符是否仅具有装饰性?它究竟是什么意思和作用?
c. 是不是也可以这样声明一个数组参数;和示例 1 一样美观吗?
void myfunc(int[4]);
void myfunc(int a[4]) { ... }
【问题讨论】:
-
没人知道。做实验:)
-
@i486 请不要再撒谎了。 C语言有一个标准。当然有人知道。作为参考,用 C 做实验是个坏主意,因为每个编译器做的事情都有点不同。参考标准确定。
-
似乎所有这些都在编译时被删除了,编译器没有进行额外的检查。括号内的表达式在运行时进行评估,但它们的值似乎丢失了。但这就是所有要说的吗?静电究竟会导致什么?
标签: c arrays function parameters static