char 数组名[数组大小];
例如:char c[10];该语句定义了一个一维字符数组 c,大小为 10,即占 10 个字符变量空间,最大可存储长度为 9 的字符串(第 10 个字符为 '0')。由于没有显式给每个字符变量赋值,故每个字符变量为随机值。
char c[8] = {'h','e','l','l','o',};//始值个数5小于数组空间个数8该语句定义了含 8 个字符变量的一维字符数组,前 5 个字符变量分别显式初始化为 'h','e','l','l','o' 等 5 个字符,后 3 个字符变量为空字符 '\0'。其存储形式如下。
printf ("%s”,c); //数组名 c 为首字符 'h' 的地址或者为 &c[0]注意:使用 printf 函数及格式控制符 %s,输出一个字符串时,输出列表中一定为某个字符的地址,且从该字符开始的串一定有结束标志 '\0'。该语句的功能是:从输出列表中的该地址开始,到第一次遇到 '\0' 为止,这之间的字符全部输出。
char c[]={'h','e','l','l','o'};对应的数组存储形式如下所示。
char c[8] = {'h','e','l','l','o'};不等价于
char c[]={'h','e','l','l','o'};
char c[5]={'h','e','l','l','o'};//初值个数5等于数组大小5执行该初始化语句后,数组的存储形式如下所示。
char c[5]={'h','e','l','l','o'};等价于
char c[]={'h','e','l','l','o'};由于该字符数组中不包含字符串结束标志 '\0',故不能使用 printf("%s",c); 输出其中的字符串。输出结果中一般含有随机乱码。
int i; for(i=0;i<5;i++) //循环次数为字符个数或数组大小 printf ("%c",c[i]);//格式控制符为%c,输出列表中为字符变量c[i]
char c[4] = {'h','e','l','l','o'}; //错误。初值个数5大于数组大小4
char c[12] = {"C program"}; //注意该数组大小应足够大用字符串对字符数组初始化时,一般大括号可以去掉,即:
char c[12]="C program";该初始化语句与以下三条语句均是等价的。
char c[12]= {'C',' ','p','r','o','g','r','a','m','\0','\0','\0'};或者:
char c[12] = {'C',' ','p','r','o','g','r','a','m','\0'};或者:
char c[12] = {'C',' ','p','r','o','g','r','a','m'};以上等价初始化语句有一个共同特点:数组的大小均为指定值 12。
char c[]="C program";该数组中除了存储字符串中的 9 个有效字符外,还自动在字符串的结尾存储 '\0' 字符。即该数组的大小为 10。其存储形式如下所示。
char c[]="abcd";定义了一个一维字符数组 c,用字符串常量对其初始化,该数组大小为 5,前 4 个元素的值分别为 'a'、'b'、'c'、'd',第 5 个元素的值为 '\0'。其存储形式如下所示。
c[2]='f'; //把'f'赋给元素c[2] scanf("%c",&c[3]); //输入一个字符,保存到元素c[3]对应的地址空间中 printf("%c",c[1]); //输出元素c[1]中的字符值如果每次输出一个字符,可使用循环语句输出字符数组中保存的字符串,参考代码如下。
int i; for(i=0;c[i]!='\0';i++) //当前i号位置的字符变量只要不是结束符就输出 printf("%c",c[i]);
#include<stdio.h> int main (void) { char str[]="A good book is a good friend!"; int i, len=0; //len必须初始化为0 for(i=0;str[i]!='\0';i++) len++; printf ("The length is: %d\n",len); return 0; }运行结果为:
i=0; while(str[i]!='\0') { len++; i++; }
本文链接:http://task.lmcjl.com/news/17218.html