Luk*_*non 6 c memory arrays pointers function
我想将一个数组传递给一个函数.从我所看到的,有两种方法可以做到这一点:
1.
void f (int array[]) {
// Taking an array with square brackets
}
Run Code Online (Sandbox Code Playgroud)
2.
void f (int *array) {
// Taking a pointer
}
Run Code Online (Sandbox Code Playgroud)
每个人都被称为:
int array[] = {0, 1, 2, 3, 4, 5};
f (array);
Run Code Online (Sandbox Code Playgroud)
这两种方法之间是否存在实际差异?
在您的具体示例中,没有区别.
在更一般的情况下,这两种方法之间的一个区别源于这样的事实:在[]语法的情况下,语言对阵列声明的正确性执行"通常"检查.例如,使用[]语法时,必须完成数组元素类型.指针语法没有这样的要求
struct S;
void foo(struct S *a); // OK
void bar(struct S a[]); // ERROR
Run Code Online (Sandbox Code Playgroud)
此规则的一个特定副作用是您可以void *将void []参数声明为参数.
如果指定数组大小,则必须为正数(即使之后被忽略).
| 归档时间: |
|
| 查看次数: |
2587 次 |
| 最近记录: |