C语言字符数组的两种声明与初始化

文章讨论了在C语言中定义和使用字符串的两种常见方式:字符数组和字符指针。通过例子解释了`chars[]=lixuan`和`char*str=lixuan`的区别,强调了常量字符串的不可变性以及未初始化的字符数组可能包含随机数据的问题。同时提到了字符串复制可能导致的越界风险以及指针变量未初始化的使用限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种:char s[] = “lixuan”;
1.这么写很方便,不用考虑数组长度,但没为自己留下余地。
2.编译器其实会将它转换为 char s[7] = {‘l’,‘i’,‘x’,‘u’,‘a’,‘n’,‘\0’}。二者完全等价。
3.s是一个常量,即数组首地址,不可修改。
4.char s[12]; 没有初始化,但已经分配了12个空间,里有随机数据。
第二种:char* str = ”lixuan“;
1.str就是普通的字符指针,指向了常量”lixuan“首个字符。注意这个‘’lixuan‘’与上面的’’lixua‘‘完全不一样,这个是个常量,不可改变,上面那个不是,上面那个就是把常量字符串复制到字符数组里,里面的数据可以变。
2.char* s; 没有初始化不可使用

下面直接看题:
在这里插入图片描述
A: str1数组长度为6,str2为7,把str2复制给str1会越界的。
B: str没有初始化,10个空间里全是随机字符,把st连接后就会出现乱码。
D:st1指向的是常量,不可更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值