b / w有什么区别:
function(char* str )
function(char* str[] )
function(char str[] )
它们是如何被调用的(string
/ char[]
的类型是什么?)
答案 0 :(得分:0)
function(char * str)与function(char str [])相同,是将char数组作为参数的函数。 function(char * str [])是一个以char数组作为参数的函数。
可以使用指针调用这些函数 例如:
function(char * str []) char ** x .... function(x);
答案 1 :(得分:0)
char * s是指向char
的指针char s []是一个数组
char * s []是char的指针数组。
但是当它们被用作函数参数时,
char *s and char s[]
和
char *s[] and char **s
的待遇相同。
这意味着以下内容:
int foo(char s[] , char *s[]){
/* code */
}
与:
相同int foo(char *s, char **s){
/* code */
}
答案 2 :(得分:0)
function(char * str)
函数获取指向char的指针,您可以像下面这样调用它:
char arr[10];
function(arr); // here arr is actually a char[] type,but it decays to char*
内部功能你不知道arr长度
,function(char * str [])
这是一个指向char的指针数组,你可以像:
一样使用它char arr1[] = "foo";
char arr2[] = "fai";
char arr3[] = "foo";
char* sarr[] { arr1, arr2, arr3 };
function(sarr); // here also no length of sarr is known inside function, you should pass is as second argument
和函数(char str [])
这是一个将char []类型作为str参数的函数,你可以使用它:
char aa[12] = { "asd" };
function(aa);
我没有看到function(char * str)和function(char str [])之间有任何巨大差异。编译器甚至不允许你用这样的参数重载函数:
void function (char str[]); // compiler sees it as char* str
void function (char* str);
生成错误。
另一方面,function(char * str [])是完全不同的,因为你有char指针数组而不是字符数组
答案 3 :(得分:0)
在函数参数声明的上下文中,f( T a[] )
和f( T *a )
表示完全相同的事物; a
被声明为指向T
的指针。 f( T *a[] )
将a
声明为指向T
的指针。
这是B编程语言(从中派生出C语言)的延续,其中a[]
将a
声明为指针。
对于常规对象声明,T a[]
将a
声明为未知大小的数组;声明不完整,a
在使用大小定义之前无法使用。