C语言中定义字符串有哪些方法?
首先是数组,存放在栈区,可读可写,操作起来很方便。
char s1[] = "helloworld";初学者容易写成这样:
chars1[32]; s1="helloworld";不过编译的时候就会提示错误,因为数组名是指针常量,地址不能修改。
第二种是字符串常量,存放在只读数据区。
char*s2 = "helloworld";既然是只读,就是不能修改的意思,非要修改,就是段错误。
s2[0] = 'x';
编译运行结果:
root@Turbo:test# ./test Segmentation fault (core dumped) root@Turbo:test#第三种先在堆上申请空间,然后用字符串拷贝函数把字符串拷贝进去,用完记得释放空间。
char*s3=(char*)malloc(128); strcpy(s3,"helloworld"); free(s3);初学者容易写成这样:
char *s3 = (char *)malloc(128); s3= "helloworld"; free(s3);编译没问题,但是运行的时候,直接异常退出。
原因就是,本来指针s3指向一块堆空间:
执行:
s3="helloworld"语句后,你以为是把字符串赋值给这块堆空间:
其实是重新给指针s3赋值:
s3原来指向堆内存,现在指向只读数据区,去释放这块空间,当然是不允许的。
最后,给大家留一个关于字符串的笔试题,如果你知道答案,欢迎在文章下方留言。
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
180文章
7604浏览量
136673 -
字符串
+关注
关注
1文章
578浏览量
20505 -
指针
+关注
关注
1文章
480浏览量
70549 -
编译
+关注
关注
0文章
657浏览量
32851 -
数组
+关注
关注
1文章
417浏览量
25939
原文标题:C语言定义字符串的几种方法
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
C语言中字符串拷贝函数有几种方法?
strcpy,即string copy(字符串复制)的缩写。 是C语言标准库中实现字符串拷贝的一个函数。 各大公司笔试题最喜欢考的一道题,快来看看,你会
C语言-字符串处理
字符串在C语言里使用非常多,因为很多数据处理都是文本,也就是字符串,特别是设备交互、web网页交互返回的几乎都是文本数据。 这篇文章就介绍字符串
评论