数组与指针表示字符串的区别

1.双括号括起来的是字符串字面量,也叫字符串常量,如果字符串字面量之间没有间隔或用空白字符分隔会被视为串联在一起的字符串常量。双引号括起来的内容被视为指向该字符串存储位置的指针。
2.字符串常量属于静态存储类别。
3.字符串初始化需要足够的空间,还需要一个元素容纳空字符。无下标时编译器自动分配空间,但仅能在初始化时使用,若之后想扩充,则必须初始化时自己声明。
4.用数组(ar[])表示字符串时会把静态存储区中的字符串拷贝一个副本存储于数组中,此时ar被视为该数组首元素的地址。
注意:ar是地址常量不能更改。
5.指针形式(pt*)会直接把字符串字面量首元素的地址存储在指针中,字符串字面量被视为const数据,因此应把pt声明为指向const数据的指针,不要用指针更改字符串。
注意:pt是变量。如果打算修改字符串就不使用指针。
6.因此指针pt!=ar,pt为原先字符串字面量首元素地址相同。
注意,指针指向字符串时也可以表示为pt[]

字符串数组

X=5,Y=40
1.指针形式:const char *pt[X]={"",…,""};
pt是一个内含五个指针的数组,占用40个字节,
pt中指针指向的字符串同样不能修改;
2.数组形式:ar[X] [Y]={};
ar是一个内含五个数组的数组(拷贝了一个副本),占用200字节;
ar中每个元素的大小必须相同且可容纳最长字符串,内存使用率低;
可修改;
3,一般用指针形式,若想更改,用数组形式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值