-
字符数组的定义与初始化
Char str[10] = {‘a’,‘b’,‘c’,‘d’,‘e’};
如果说提供的字符的个数大于数组的长度,就按语法错误处理,如果小于数组的长度,不够的位置用空字符补全’\0’
-
字符数组与字符串
1)、C语言中将字符串当做字符数组来处理,字符串的结束标志是‘\0’,而前面的所有字符组成字符串,不算’\0’
2)、对于字符串常量的话,系统会自动在字符串的结尾加’\0’,作为结束符,但是内存大小=字符的个数+1(’\0’)
备注:’\n’的ACSS是0的字符,ASCII是0的字符是不可显示,它只是用来辨别字符串结尾的标志
实例:字符串数组的初始化
char str[] = {“abc def”};
char str[] = “abc def”;
但是上面的例子只能用于初始化一个字符数组,并不能用于赋值,像下面的例子就是一个错误:
Char str[];
Srt=”abc def”;
所以字符数组只能对其元素一个一个赋值,除此之外字符串的大小是字符个数+1因为系统自动加’\0’
下面的例子与上面的初始化等价
Char str[] = {‘a’,’b’,’c’,’ ’,’d’,’e’,’f’,’\0’};
与Char str[] = {‘a’,’b’,’c’,’’,’d’,’e’,’f’}的大小不同;
-
字符串的表示形式
C语言中存放字符串的方式:
1)、字符数组
Charstr[] = “abc def”;
2)、字符指针指向一个字符串
Char*str = “abc def”;
说明一下 str此时不是一个变量了,事实上它在内存的常量区,str指针指向该块内存,将字符串的首地址赋给srt
字符串的输出方式
printf(“%s\n”,str);这是给出了字符串的首地址,系统输出字符数据后,然后然后str自动+1指向下一个字符,直到遇到字符标志’\0’
-
字符串的赋值方式
再此必须明确字符数组里放的是数组的成员,而字符指针只是放的指向字符串的首地址
其次字符数组绝对不能赋值
对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值
char str[14];
str="I love you"; (但在字符数组初始化时可以,即char str[14]="I love you";)
数组名是常量,故不能直接赋值,故只能用strcpy(因数组已提前分好内存了)
而对字符指针变量,采用下面方法赋值:
char* a;
a="I love you";
指针是变量,故可直接赋值,但不能用strcpy(因指针没有分配内存,除非提前分配好如上)
Char buf[10];
Char *str=buf;
Strcopy(str,”I love you”)