在结构中分配未初始化的char指针或char指针可以吗?

杰克·默罗
struct Test {
    char *s;
};

Test test;
test.s = "Hey";

要么

char *s;

s = "Hey";

因此,我不需要编辑字符串或类似的东西。我只是想知道我上面的代码是否允许使用或安全使用?

如果不应该使用它,为什么呢?

或者,如果有更好的方法,我应该这样做吗?

池上

这是允许的。您甚至不会从-Wall得到警告-Wextra,尽管您会收到-Wwrite-strings

只要您不更改数组中s指向点(例如*ss[0])或尝试释放的任何元素,它都是安全的s

如果处理一堆Test字符串而有些字符串是只读的,而有些则不是,则可能会遇到问题例如,您怎么知道Test销毁时是否应释放字符串

如果您的所有字符串都不会被编辑或释放,那么在尝试执行不应执行的操作时,可以使用以下内容至少获得警告:

struct Test {
    const char *s;
};

另一方面,您可以复制可以编辑和/或释放的字符串。

test.s = strdup("Hey");

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章