c - 使用变量作为函数参数和直接使用字符串作为函数参数有什么区别?

标签 c function arguments

我正在制作一些将字符串作为函数参数的函数,但是

// 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/

相关文章:

javascript - 在 Nightwatch 页面对象中使用 windowHandles

c - 在文件中设置 eof 指示器

javascript - 将函数名称定义为动态

c - 在 C 语言中,为什么数组的地址等于它的值?

javascript - 在 Canvas 中绘制一个球作为对象

javascript - 有什么方法可以覆盖参数的 getter/setter 性质吗?

无法弄清楚如何使用 write() 将整数写入文件

linux - bash中带空格的回调脚本

c - C 中的内存划分

c++ - 聚合的默认初始化