char*和char[]

本文深入探讨了C语言中字符串初始化的三种常见方式,并详细解释了如何使用 strlen() 函数获取字符串长度。重点指出s3的初始化方式是非法的,因为它缺少终止符。同时,对比了s1和s2两种合法初始化方式下,如何通过cout输出字符串,以及s1作为常量字符串的特性导致的操作限制。

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

char* s1 = "abcd"; // 1

char s2[] = "abcd"; // 2

char s3[] = { 'a', 'b', 'c', 'd'}; // 3

以上三种定义都能通过编译。

其中s3的初始方式是非法的,因为没有终止符。

s1和s2的定义合法。

strlen( s1) 和strlen(s2)都等于4,s1[4]和s2[4]都是0,所以都可以通过cout<<s1<<s2的方式正常输出。

但s1指向的常量字符串,这意味着*s1='x'这样的语句在运行时会出错,而*s2='x'则没问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值