gpt4 book ai didi

c - C 中 char *str ="this is a string"与 char *str = strdup ("this is a string"之间的区别是什么

转载 作者:行者123 更新时间:2023-12-04 12:17:40 24 4
gpt4 key购买 nike

以下代码有什么区别:

char* str = "这是一个字符串"

来自这个:

char* str = strdup("这是一个字符串")

使用场景?

最佳答案

在这个声明中

char *str="this is a string"; 

指针str 指向字符串文字“this is a string”的第一个字符。字符串文字 1) 具有静态存储持续时间,并且 2) 不能更改。

因此

str[0] = 'T'; // undefined behaviour
free( str ); // undefined behaviour

在这个声明中

char *str = strdup("this is a string");

指针 str 指向包含字符串“this is a string”的动态分配字符数组的第一个字符。您 1) 必须在不再需要数组时释放内存,并且 2) 您可以更改数组中的字符。

str[0] = 'T'; // valid
free( str ); // valid

可能会说,在第一种情况下,字符串的所有者是编译器,而在第二种情况下,字符串的所有者是程序员。:)

关于c - C 中 char *str ="this is a string"与 char *str = strdup ("this is a string"之间的区别是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30680967/

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