首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组参数中的数组长度

数组参数中的数组长度
EN

Stack Overflow用户
提问于 2015-04-27 12:07:23
回答 1查看 123关注 0票数 9

我正在阅读C编程: K.N.King学习C编程语言的现代方法,本章讲述函数和数组参数。我们解释说,可以使用这样的构造来表示数组参数的长度:

1.

代码语言:javascript
运行
复制
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.

代码语言:javascript
运行
复制
void myfunc(int[static 5]); /* prototype */

void myfunc(int a[static 5]) {
... /* body */
}

所以问题是:

a.是示例1中的构造,还是它们对编译器有影响?

b.是这种情况下的static修饰语吗?它到底意味着什么和做什么?

c.是否也可以声明这样的数组参数;它是否像示例1那样美观?

代码语言:javascript
运行
复制
void myfunc(int[4]);

void myfunc(int a[4]) { ... }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-27 12:21:09

函数数组参数的最内部维度总是被重写为指针,因此不幸的是,给出的值没有多大的重要性。这对于多维数组来说是这样的:从第二维度开始,编译器就会使用这些元素来计算像A[i][j]这样的东西。

该上下文中的static意味着调用方必须提供至少相同数量的元素。大多数编译器忽略了值本身。最近的一些编译器由此推断,不允许使用空指针作为参数,并在可能的情况下对您进行相应警告。

还请注意,原型可能具有*,因此很明显,这个值在那里并不重要。对于多维数组,具体值是用定义表达式计算的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29895323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档