c语言 字符串数组 初始化,C 字符串数组初始化问题

  • Post author:
  • Post category:其他


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

char a[10]=”hello”;

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

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

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

3、利用strcpy

char a[10]; strcpy(a, “hello”);

易错情况:

1、char a[10]; a[10]=”hello”;//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!

2、char a[10]; a=”hello”;//这样的情况easy出现,a尽管是指针,可是它已经指向在堆栈中分配的10个字符空间,如今这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不同意!

还有:不能使用关系运算符“==”来比較两个字符串,仅仅能用strcmp() 函数来处理。

C语言的运算符根本无法操作字符串。在C语言中把字符串当作数组来处理,因此,对字符串的限制方式和对数组的一样,特别是,它们都不能用C语言的运算符进行复制和比較操作。

直接尝试对字符串进行复制或比較操作会失败。比如,假定str1和str2有例如以下声明:

char str1[10], str2[10];

利用=运算符来把字符串拷贝到字符数组中是不可能的: