【C语言】数组--字符串初始化数组的方法分析

本文详细解析了C/C++中字符串初始化与赋值的区别,包括数组与指针的不同使用方式,以及不当操作可能导致的问题。重点讲解了如何正确地初始化字符串数组及避免常见错误。

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

字符串初始化数组的方法分析:

char ch[8];
ch = "hello";
错误原因:错误提示:不兼容的类型,error: incompatible types in assignment


char ch[8];这样定义了一个数组后,数组名ch就是个地址常量,也就是指针常量,只能指向该数组在内存地址空间中的首地址。不可以指向别的地址。所以如果

ch = "hello";就是把字符串常量"hello"的首地址赋给地址常量a,这就改变了ch这个指针常量的地址,与上一句的定义冲突,这是不允许的。而如果写成

char ch[8] = "hello";这就是在定义数组a的时候就对其初始化。

char a[]="123" 这个的原理是,系统先根据"123"的长度给a分配内存,这里a的内存在栈,然后把"123"这个常量数据区的内容拷贝给a
 
char *a="123";这种情况a不分配内存,直接让a指向"123"这个常量数据区 所以如果修改a指向的内容就会出错,比如a[0]='5';//false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值