指针与字符串:(const)char *p2 = "lmj";定义的是一个字符串常量!符串常量,正因为是常量,所以它内部的字符是不允许修改的。-阿里云开发者社区

开发者社区> 吴英强> 正文

指针与字符串:(const)char *p2 = "lmj";定义的是一个字符串常量!符串常量,正因为是常量,所以它内部的字符是不允许修改的。

简介: <p><span style="font-size:18px">int main(){</span></p> <p><span style="font-size:18px">   char *p2 = "lmj";</span><br><span style="font-size:18px">   *p2 = 'L';</span><br><br><span style="font-si
+关注继续查看

int main(){

   char *p2 = "lmj";
   *p2 = 'L';

   printf("%s", p2);

  return 0;

}

程序运行结果:段错误


看起来似乎是可行的,但这是错误代码,错在第2行。首先看第1行,指针变量p2指向的是一块字符串常量,正因为是常量,所以它内部的字符是不允许修改的。

有人可能搞蒙了,这里的第1行代码char *p2 = "lmj";跟第一种方案中的第2行代码char a[] = "lmj";不是一样的么?这是不一样的。

char a[] = "lmj";定义的是一个字符串变量!
char *p2 = "lmj";定义的是一个字符串常量!严格来说,应该写成const char *p2 = "lmj";,前面加个常量修饰符


定义字符串的时候,应该考虑清楚:以后程序是否对字符串的内容进行修改,如果修改,定义为数组形式,若不修改,定义为指针形式,定义为一个字符串常量

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
计算字符串相似度算法——Levenshtein
0.这个算法实现起来很简单 1.百度百科介绍: Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。 许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
898 0
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1
1706 0
【Android】自定义ListView的Adapter报空指针异常解决方法
刚刚使用ViewHolder的方法拉取ListView的数据,但是总会报异常。仔细查看代码,都正确。 后来打开adapter类,发现getView的返回值为null。
677 0
巧用JSON.stringify()生成漂亮格式的JSON字符串
巧用JSON.stringify()生成漂亮格式的JSON字符串 使用JavaScript处理XML基本上就是一个杯具,这也是JSON在程序开发中广受欢迎的原因。我曾经写过一个 JavaScript函数来将XML转换为JSON,那种~duang~duang~的痛点简直是折腾得你欲死欲仙。
749 0
一文掌握字符串之正则表达式,值得收藏!
一文掌握字符串之正则表达式,值得收藏!
26 0
+关注
329
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载