c语言字符串赋值

char string[500];string[500]="abcdefg";请问这个为什么会跳出来一个警告?是什么原因,请说下好吗?char string[500]="abcdefg";这样是对的,有人说初始化和赋值2个概念,我也这么认为,这里怎么理解?

// string[500]="abcdefg"; //是将字符串"abcdef"赋值给字符数组中string[500]这个元素,先不说string[500]已经越界了. 单单是string[500]只能存放一个字符,但你这里却要将一串字符串赋值给他.当然会错误.像你说的在定义时初始化是对的.如果定义后要进行赋值.就用string.h中的strcpy()函数,将"abcdefg"复制到字符串string中.代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char string[500];
// string[500]="abcdefg";
strcpy(string,"abcdefg"); //将字符串常量赋值给字符数组return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-17
char string[500]="abcdefg";
这个就是说你在给一个数组赋值
但是如果你定义完数组以后又这样
string[500]="abcdefg"; 就是说你在给数组里的第500个元素赋值
首先数组下标最大是499 没有500
其次 只能存放一个字符你确放了一个字符串
当然不对了本回答被网友采纳
第2个回答  2013-12-17
你定义的char string[500]数组大小是500,赋值的时候string[500]这个元素不可达。所以是数组越界的问题。char string[500]="abcdefg";这个是对的 在定义数组的同时初始化了。。
第3个回答  2020-02-08
b[]中最后一个逗号是占了一个字节的,因此数组的长度为10。当把字符串赋给一个数组时,字符串后面还有一个空操作符,要占个字节,这个就刚好了。
第4个回答  2019-02-09
本来就可以啊
,后面没东西默认是空元素啊
B[]是10个字符的数组
字符串默认后面有个NULL做结束符的
不是正好嘛。。。