444444 发表于 2016-4-25 23:16:29

字符数组初始化的问题

char a;
a="sssssssssss";
printf("%s",a);
*********************************
char a="sssssssssss";
printf("%s",a);
****************************************

444444 发表于 2016-4-25 23:17:00

为什么第二个能用,第一个 能运行,但是是乱码

444444 发表于 2016-4-25 23:18:03

感觉都一样啊,难道是因为长度吗

n0noper 发表于 2016-4-26 09:39:05

第一个:
你定义了一个char型数组,总共20个char型元素:下标0到19。
你这一句a = "sss"; 本身访问a就越界了,a这样表示一个char型元素,"sss"这表示一个字符串,你这样访问本身是错误的。你的a数组没有初始化,乱码正常(具体数据根据编译器不同而异)。

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

如果有什么说错的,卤煮指出来再讨论。

444444 发表于 2016-4-26 10:48:32

n0noper 发表于 2016-4-26 09:39
第一个:
你定义了一个char型数组,总共20个char型元素:下标0到19。
你这一句a = "sss"; 本身访问a[ ...

我懂了,那如果不在定义的时候就赋值,怎么把一个字符串赋数组?

n0noper 发表于 2016-4-26 10:58:54

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

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

最普遍的就是拷贝
strcpy,memcpy或者其他拷贝函数。

444444 发表于 2016-4-26 11:04:48

n0noper 发表于 2016-4-26 10:58
笨方法就是遍历
例如
int i = 0;


懂了,谢谢啊
页: [1]
查看完整版本: 字符数组初始化的问题