大佬教程收集整理的这篇文章主要介绍了C中的字符串指针可以直接分配字符串文字吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> void xyz(char **value) { // *value = strdup("abc"); *value = "abc"; // <-- ?????????? } int main(void) { char *s1; xyz(&s1); printf("s1 : %s \n",s1); }
输出:
s1 : abc
我的理解是我必须使用strdup()函数为C中的字符串分配内存,而我没有分配内存.但是在这种情况下,只需使用“”分配字符串值,程序似乎工作正常,任何人都可以解释一下吗?
因此,您可以将该地址分配给指针.程序的行为定义得很好,只要你不尝试通过指针修改文字,就不会发生任何不好的事情.
因此,最好通过const正确使编译器为您工作.希望尽可能将指针类型标记为const,并且编译器将反对修改尝试.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> void xyz(char const **value) { *value = "abc"; } int main(void) { char const *s1; xyz(&s1); printf("s1 : %s \n",s1); s1[0] = 'a'; << Error on this line }
以上是大佬教程为你收集整理的C中的字符串指针可以直接分配字符串文字吗?全部内容,希望文章能够帮你解决C中的字符串指针可以直接分配字符串文字吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。