gpt4 book ai didi

c - 直接发送字符串与发送指向字符串的指针给函数有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 05:37:43 25 4
gpt4 key购买 nike

直接发送字符串与将指向字符串的指针发送给函数有什么区别?

例如:

void foo(char * a){//suppose foo reads and/or writes to the passed string
...
}

int main(){
foo("asdf");//what is the difference between this

char a[]="asdf";
foo(a);//and this?
}

对于第一个,我会遇到各种访问冲突错误,而对于第二个,我不会,那么两者之间有什么区别?

最佳答案

在第一种情况下,您将字符串文字传递给函数。字符串文字是不可变的,这意味着您不能更改它的任何部分。这是一个存储在只读内存段中的 static 数组。尝试更改此字符串会导致 Undefined Behavior .

在第二种情况下,您构造一个数组,使用 "asdf" 对其进行初始化并将其传递给函数。在这种情况下,可以修改数组中的字符。

参见 question 1.32 of the comp.lang.FAQ了解更多信息。

关于c - 直接发送字符串与发送指向字符串的指针给函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28605937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com