c字符数组初始化方式和字符串常量

1 #include<stdio.h>
2 #include<stdlib.h>
3
4
5 int main()
6 {
7 char ar0[] = {'n','a','m','e','i','s','l'}; //初始化字符数组方式1
8 char ar1[] ="nameisl"; //初始化字符数组方式2.这里是一个初始化列表,不是字符串常量,以后可以修改其值
9 char *ar2 = "NAMEISL"; //字符串常量.ANSI标准中不能修改字符串常量,编译器会将相同的字符串常量放在同一位置
10
11 show_str(ar0);
12 show_str(ar1);
13 show_str(ar2);
14
15 printf("ar0: %d\t art1: %d\tar2= %d\t\n",
16 sizeof(ar0)/sizeof(char), sizeof(ar1)/sizeof(char),
17 strlen(ar2));
18
19 return 0;
20 }
21
22 void show_str(char str[])
23 {
24
25 for(;*str != '\0';str++)
26 {
27 printf("%c ",*str);
28 }
29
30 printf("\n");
31 }

运行结果:

n a m e i s l p �  n a m e i s l
n a m e i s l                                //使用“字符串”的形式初始化字符数组,
N A M E I S L                             //编译器会自动在字符数组最后的那个元素加上'\0',所以show函数能正确打印
ar0: 7     art1: 8    ar2= 7          //art1 = 8,证明art1数组最后面有一个'\0','\0'的assic码的字节未全为0

posted @ 2011-05-17 13:40  zendPger  Views(1906)  Comments(1Edit  收藏  举报