struct Test {
char *s;
};
Test test;
test.s = "Hey";
要么
char *s;
s = "Hey";
因此,我不需要编辑字符串或类似的东西。我只是想知道我上面的代码是否允许使用或安全使用?
如果不应该使用它,为什么呢?
或者,如果有更好的方法,我应该这样做吗?
这是允许的。您甚至不会从-Wall
或得到警告-Wextra
,尽管您会收到-Wwrite-strings
。
只要您不更改数组中s
指向点(例如*s
或s[0]
)或尝试释放的任何元素,它都是安全的s
。
如果处理一堆Test
字符串,而有些字符串是只读的,而有些则不是,则可能会遇到问题。例如,您怎么知道Test
销毁时是否应释放字符串?
如果您的所有字符串都不会被编辑或释放,那么在尝试执行不应执行的操作时,可以使用以下内容至少获得警告:
struct Test {
const char *s;
};
另一方面,您可以复制可以编辑和/或释放的字符串。
test.s = strdup("Hey");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句