字符数组与字符串

1。字符数组与数字数组的赋值方式相同。例如

char ml[4]={'q','i','a','o'};

而字符串的定义,主要是以下格式。

char ml[5]="qiao";
or char ml[5]={'q','i','a','o','\0'};

定义字符串时要确定数组长度至少比字符数多1,因为末尾有空字符。或者直接写成

char ml[]="qiao";

让编译器来决定数组的长度。但是只有char[n]在C99之前是不合法的。
2。字符串和数组一样,它的名字等同于字符串首地址。
则有以下关系成立,例子如下。

char car[10]="Tata";
car==&car[0],*car=='T',and *(car+1)=car[1]=='a'

所以定义字符串也可以用指针。
接下来看以下的例子

const char *pt1="Something is new.";
const char ar1[]="Something is new.";

字符串可以用以上两种方式定义,那么有什么区别呢。
3。数组和指针方式的区别
数组的方式在内存中分配字符串长度+1的空间,当程序下载到内存中,字符串会被下载到静态内存中;而当程序运行时,字符串就会被复制到数组中。这时就会有两个字符串,一个在静态内存一个在数组里。
编译器会把ar1当作字符串首地址的符号,ar1是一个固定地址,不能改变ar1的值。ar1+1时允许的,而ar1++是不允许的。

指针的方式也会分配相同的长度在静态内存中,但当程序运行时只会额外给指针变量分配一个地址即可。因为指针是变量可以更改它的值。因此++pt1是被允许的。
这里要注意的是,字符串被认为是常量,指针方式是不能通过指针来改变字符串内容的,而数组方式已经将字符串从复制到数组,是可以任意改变其值的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值