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文章
7530浏览量
128723 -
字符串
+关注
关注
1文章
551浏览量
20126 -
指针
+关注
关注
1文章
473浏览量
70362 -
编译
+关注
关注
0文章
615浏览量
32392 -
数组
+关注
关注
1文章
409浏览量
25595
原文标题:C语言定义字符串的几种方法
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
如何设置字符串中的字符根据不同条件显示不同颜色?如何将不同颜色的字符串合并显示后保留字符串原来的颜色?
labview中如何设置所显示的字符串中的字符根据不同的条件显示不同的颜色呢?不知道字符在字符串中位置的原因,使用属性节点中文本位置的那种方法
发表于 09-25 00:35
C语言是如何实现字符串大小与字符串比较的函数
C语言实现字符串比较(非库函数)今天在keil上写代码时,使用strlen和strcmp一直会有警告,所以就有了下面的东西,自己写一个判断数组大小和字符数组比较的代码。仅供参考。kei
发表于 07-14 06:40
字符串逆序的方法分享
分享一道经典的C语言题目。题目:字符串逆序。如:hello world转换为dlrow olleh。流程图:代码:左右滑动查看全部代码>>>/*-程序功能:字符串...
发表于 02-28 07:17
C语言中字符串拷贝函数有几种方法?
strcpy,即string copy(字符串复制)的缩写。 是C语言标准库中实现字符串拷贝的一个函数。 各大公司笔试题最喜欢考的一道题,快来看看,你会几种方法? 问:你会如何实现这个
C语言-字符串处理
字符串在C语言里使用非常多,因为很多数据处理都是文本,也就是字符串,特别是设备交互、web网页交互返回的几乎都是文本数据。 这篇文章就介绍字符串定义
评论