c语言,用指针方式定义的字符串为什么不能修改?
你好,我是[不要随波逐流]。我很高兴为你回答。用双引号括起来的字符串是字符串文本,它是一个静态对象。因此,从语义上讲,指针指向字符串后,不能修改该字符串的内容。虽然不能更改,但它是一个左值,可以使用&获取地址(结果是一个地址常量)。在c中,它的类型是char[]而不是常量(在c中,charconst[]是常量)。修改字符串的文字字符以更改字符串的文字字符会导致未定义和不可预测的行为,应该避免这种情况。如果要修改,则只能使用指向可以修改的字符串的指针,例如字符数组。为了实现lz所提到的函数,可以用char*p=malloc(sizeof(“thisisaprogram”)strcpy(p,“thisisaprogram”)代替第一行。或者您可以使用一个非ansic库函数:char*p=strdup(“thisisaprogram”),这样p指向的内存单元就是一个可修改的堆空间。----[原答群]比较专业的科普知识,欢迎关注我。如果你喜欢我的回答,也请给我表扬或转发,你的鼓励是支持我写下来的动力,谢谢。
原文标题:修改字符串的某一位 C语言,用指针方式定义的字符串为什么不能修改?,如若转载,请注明出处:https://www.saibowen.com/tougao/19278.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。