我正在制作一些将字符串作为函数参数的函数,但是
// This is working fine
char string[] = "Any string";
func(string);
//This is not working
func("Any string");
请告诉我区别
最佳答案
What is the difference in using variable as function argument and in using directly string as function argument?
char string[] = "Any string";
func(string);
// VS.
func("Any string");
string[]
是一个字符数组,使用“任意字符串”
的大小和内容进行初始化。
“任何字符串”
是一个字符串文字。
如果 func()
是 func(const char *s)
,则没有区别,因为 func()
只是读取字符串。
如果func()
是func(char *s)
,但没有修改s
指向的字符串,则不区别在于 func()
只是读取字符串。
如果func()
是func(char *s)
,并尝试修改s
指向的字符串OP later reports this ,那么 func(string)
就可以了,因为 string
是一个可修改的字符数组。然而,func("Any string")
是未定义的行为 (UB)。 @John3136 @William Pursell代码不应尝试修改字符串文字。由于OP报告第一个工作正常,而第二个“不工作”,这是主要嫌疑人。
为了确定,需要 func()
的定义,因为其他解释也是可能的。
关于c - 使用变量作为函数参数和直接使用字符串作为函数参数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60032415/