定义这样的函数时:
void myFunction(arguments){
// some instructions
}
使用char[] name
和char name[]
作为函数的参数有什么区别。为什么不使用指向char的指针。
答案 0 :(得分:5)
1 st 之一(char[] name
)将无法编译,因为它的语法错误。
函数实现参数定义中的数组子脚本转到(强制)参数的名称。
正确的语法是2 nd :
char name[]
示例:
void p(char[]); /* prototype */
void p(char name[]) /* implementation */
{
}
但char[] name
将被视为无效语法。
答案 1 :(得分:2)
在Java和C#等其他语言中,[]
括号的位置只是语法糖,不会以任何方式影响程序。
C,作为一种较旧的语言,没有那种灵活性。必须使用名称后的括号声明数组。
至于何时以及为什么要使用指针,请阅读here。
答案 2 :(得分:1)
您将收到编译错误。
0.c:3:14: error: expected ‘;’, ‘,’ or ‘)’ before ‘a’
int f(char []a){
^
编译这样的代码是不可能的:
#include <stdio.h>
int f(char []a){
}
main(){
}