char str[10]; str="string";

本文深入解析C语言中数组与指针的区别与联系,包括数组定义、初始化及使用误区,指针变量的特性与正确操作方法。强调数组名作为指针常量不可更改,指针变量可灵活赋值,以及一维数组初始化的正确方式。

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

您必须明白char str[10];是定义了一个含有十个元素的数组,而且这十个元素在内存中是以连续的存储单元存放的。其中str是该数组的数组名字,而且str还是该数组的首地址,也就是十个元素中的第一个元素的地址,但务必注意str是一个指针常量,它是不能被赋值的也不能进行自增自减的!例如:假设你在函数中声明一个char str[10];操作系统为其分配一个连续的10个存储单元,假设其首地址是1024,那么str的不仅代表着数组的名字而且它的值是1024,是一个常量不能被改变。

2、您指出char str[10];str="string";是错误的,因为前面已经指出str只是一个地址,不是变量是不能被赋值的。

3、char *s;是定义的一个指针变量,它指向一个字符型数据,它是可以被赋值的。指针变量和普通变量是一个道理的,不同的只是指针变量存放的是地址,而普通变量存放的是数值或字符等。*s代表的是指针所指向的数据,您用*s="string";是错误的,因为*s和其他变量一样只能存放一个一个字符,而"string"中包含7个字符分别为s,t,r,i,n,g,\0;切勿把*s="string"与s="string"混同,后者是可以的,因为s是一个指针s="string"是把该字符串的首地址赋值给了s而不是把string的每个地址都给了s,前面已经指出字符串"string" 是存放在连续的存储单元的,所以可以通过s的递增来实现对每个元素的访问。

4、一维数组的初始化应该是如果元素为整数可用char str[10]={5,4,3,2,1};如果是字符则用char str[10]="string";

最后我帮你指出您的式子错误的地方,您在结合书本好好理解一下,因为不能画图所以我说的可能繁杂了点!

【一】char s[5]="string";(数组s仅有5个存储空间是不能存放7个元素的)
等价于char *s;*s="string";(*s仅能代表一个元素,是不能赋值给它整个数组的)
【二】char s[5]="string";(错误同上 )

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值