这两段代码为什么一个运行成功,一个运行失败?
#include "stdio.h"
void main()
{
char a[20];
a[20]="你好";
printf("%s\n",a);//运行失败
}
#include "stdio.h"
void main()
{
char a[20] = "你好";
printf("%s\n",a);//运行成功
}
[解决办法]
数组定义之后是不能这样赋值的
用strcpy()吧
[解决办法]
char a[20];
a[20]="你好";
printf("%s\n",a);//运行失败
这样写,在VC环境下编译都不过,这样定义a是一个字符数组,对字符数组赋值要用strcpy这样的函数,比如:
strcpy(a, "你好");
char a[20] = "你好";
printf("%s\n",a);//运行成功
这样写,a其实就是一个字符型指针,指向字符常量"你好",所以没有问题。
[解决办法]
你这个编译的时候就不能通过,不用说是运行了!
[解决办法]
a[20]="你好";相当于你将数组的下标20赋值。出现问题1:a[20]数组最大到19 2:a[2]起码的下标是一个字符型赋值,你这里也不对。
第二为啥对我就不解释了