定义一个数组char a[10];
怎么给这个数组赋值呢?

1、定义的时候直接用字符串赋值

char a[10]="hello";
注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!

2、对数组中字符逐个赋值

char a[10]={'h','e','l','l','o'};

3、利用strcpy,先定义再给a赋值

char a[10];
strcpy(a, "hello");

易错情况:

1、char a[10]; a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!
2、char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!
具体报错信息为:[错误] 赋值时类型不兼容: 'const char [6]' 到 'char [10]'

main()
{
char s[30];
strcpy(s, "Good News!"); /给数组赋字符串/ .
}
上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy时, strcpy(s1, s2);复制字符串 s2 到字符串 s1。

标签: none

添加新评论