C语言字符串

用双引号括起来的内容称为字符串字面量,也叫做字符串常量。双引号中的字符和编译器自动加入末尾的\0字符,都作为字符串储存在内存中,并且从ANSIC标准起,如果字符串字面量之间没有间隔,或者用空白字符分隔,C会将其视为串联起来的字符串字面量。如:

char greeting[50]= "Hello , and"" how are  "" you";等价于:

char greeting[50]= "Hello , and how are   you";

字符串常量属于静态存储类别。而且我觉得很有意思的一点是被双引号括起来的字符串被视为指向该字符串存储位置的指针,这一点就像数组名是指向该数组位置的指针一样。

可以通过数组创建字符串也可以通过指针创建字符串。如:

const char m1[40]="Limit  yourself to one line's worth.";

const char * pt1 ="Something is  pointing at me.";

这两种方式的主要区别是:

用数组创建字符串,首先字符串是储存在静态存储区,当程序运行的时候,才会开始为数组分配内存,此时会将字符串拷贝到数组中,这个时候字符串有两个副本,一个是在静态内存中的字符串字面量,另一个是储存在数组ar1中字符串。

而用指针创建的字符串,在程序开始执行的时候会把字符串的地址储存在指针变量中去。

按理说字符串是常量,但是如果我们通过指针创建的话,就可能修改它里面存储的内容,所以推荐方式是用下面的方法初始化

字符串。

const chatr * p1="Beare the Flingons!";













  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Master_Yoda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值