鱼C论坛

 找回密码
 立即注册
查看: 2187|回复: 6

字符数组初始化的问题

[复制链接]
发表于 2016-4-25 23:16:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
char a[20];
a[20]="sssssssssss";
printf("%s",a);
*********************************
char a[20]="sssssssssss";
printf("%s",a);
****************************************
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-4-25 23:17:00 | 显示全部楼层
为什么第二个能用,第一个 能运行,但是是乱码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-25 23:18:03 | 显示全部楼层
感觉都一样啊,难道是因为长度吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-26 09:39:05 | 显示全部楼层
第一个:
你定义了一个char型数组,总共20个char型元素:下标0到19。
你这一句a[20] = "sss"; 本身访问a[20]就越界了,a[10]这样表示一个char型元素,"sss"这表示一个字符串,你这样访问本身是错误的。你的a数组没有初始化,乱码正常(具体数据根据编译器不同而异)。

第二个:
你定义20个char类型的a数组,然后赋值"sss"是可以的。这个才是你想要的。

如果有什么说错的,卤煮指出来再讨论。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-26 10:48:32 | 显示全部楼层
n0noper 发表于 2016-4-26 09:39
第一个:
你定义了一个char型数组,总共20个char型元素:下标0到19。
你这一句a[20] = "sss"; 本身访问a[ ...

我懂了,那如果不在定义的时候就赋值,怎么把一个字符串赋数组?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-26 10:58:54 | 显示全部楼层
444444 发表于 2016-4-26 10:48
我懂了,那如果不在定义的时候就赋值,怎么把一个字符串赋数组?

笨方法就是遍历
例如
int i = 0;
for (i = 0; i < 20; ++i)
    a[i] = 'A';

最普遍的就是拷贝
strcpy,memcpy或者其他拷贝函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-26 11:04:48 | 显示全部楼层
n0noper 发表于 2016-4-26 10:58
笨方法就是遍历
例如
int i = 0;

懂了,谢谢啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-1 02:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表