char str[]和char*str作为函数参数有什么区别?
假设我们有以下功能原型:char str[]和char*str作为函数参数有什么区别?,c,arrays,string,pointers,parameters,C,Arrays,String,Pointers,Parameters,假设我们有以下功能原型: void function1(char str[]); void function2(char *str); 现在假设我们有一个字符串charname[]=“John”我们希望传递这些函数。这两者的区别是什么?它们的用途和局限性是什么?是否存在一种情况优于另一种情况?如果字符串被初始化为char*name=“John”,会有什么不同吗 我理解在函数中使用char str[]和char*str之间的区别,但我不知道它们作为函数参数或参数的行为。没有区别在参数列表中,T[
void function1(char str[]);
void function2(char *str);
现在假设我们有一个字符串charname[]=“John”代码>我们希望传递这些函数。这两者的区别是什么?它们的用途和局限性是什么?是否存在一种情况优于另一种情况?如果字符串被初始化为char*name=“John”
,会有什么不同吗
我理解在函数中使用char str[]
和char*str
之间的区别,但我不知道它们作为函数参数或参数的行为。没有区别在参数列表中,T[]
和T[n]
格式的参数由编译器以T*
的形式重新写入。这意味着不能按值传递数组。没有区别在参数列表中,T[]
和T[n]
格式的参数由编译器以T*
的形式重新写入。这意味着您不能按值传递数组。从技术角度看没有区别。但是,如果您使用[],那么您就是在为阅读您的代码的人编写文档,您希望看到一个数组。从技术角度看,这没有什么区别。但是,如果您使用[],那么您是在为阅读您的代码的人编写文档,您希望得到一个数组。在C语言中,这两种语言之间绝对没有区别
void function1(char str[]);
void function2(char *str);
因为当作为参数传递给函数时,char str[]
只是简化为char*
。而且对于记录,即使是char str[20]
也是与函数将其视为char*str
完全相同的东西
至于如果字符串被初始化为
char *name = "John";
是的,是的!这里,该字符串的地址John
被分配给指针name
,另一个地址可以稍后重新分配给name
char *name="John";
name="Mary"; //Works in C
但是在
char name[]="John";
您正在将字符数组对象name
初始化为John
。这里的区别在于初始化后无法将另一个字符串重新分配给name
。C中的以下错误:
char name[]="John";
name="Mary";// Wrong
在发布问题的同时,在论坛上搜索一分钟,看看问题是否已经得到了回答。你问题的第一部分已经被问了很多次,并且回答得非常好。因为你似乎对第二部分感到困惑,所以我在这里回答了这个问题。在C和
void function1(char str[]);
void function2(char *str);
因为当作为参数传递给函数时,char str[]
只是简化为char*
。而且对于记录,即使是char str[20]
也是与函数将其视为char*str
完全相同的东西
至于如果字符串被初始化为
char *name = "John";
是的,是的!这里,该字符串的地址John
被分配给指针name
,另一个地址可以稍后重新分配给name
char *name="John";
name="Mary"; //Works in C
但是在
char name[]="John";
您正在将字符数组对象name
初始化为John
。这里的区别在于初始化后无法将另一个字符串重新分配给name
。C中的以下错误:
char name[]="John";
name="Mary";// Wrong
在发布问题的同时,在论坛上搜索一分钟,看看问题是否已经得到了回答。你问题的第一部分已经被问了很多次,而且回答得很好。因为你似乎真的对第二部分感到困惑,所以我在这里回答了这个问题。如果你费心四处看看,你肯定会找到答案的。这个问题已经被问了很多次,也被回答了很多次。如果你把你的整个标题复制/粘贴到谷歌搜索框中(就像我刚才笑的那样),你会得到很多点击率。如果你费心四处看看,你肯定会找到答案。这已经被问过很多次了。如果你把你的整个标题复制/粘贴到谷歌搜索框中(就像我刚才笑的那样),你会得到大量的点击率。你的答案可能会重复在这里使用[]
来记录意图是一个好主意。不过,我不认为它在实践中有太多的用途。使用[]
来记录意图是一个好主意。但我不认为它在实践中有多大用处。