#include<stdio.h>
#include<stdlib.h>
int main()
{
char ar0[] = {'n','a','m','e','i','s','l'}; //初始化字符数组方式1
char ar1[] ="nameisl"; //初始化字符数组方式2.这里是一个初始化列表,不是字符串常量,以后可以修改其值
char *ar2 = "NAMEISL"; //字符串常量.ANSI标准中不能修改字符串常量,编译器会将相同的字符串常量放在同一位置
show_str(ar0);
show_str(ar1);
show_str(ar2);
printf("ar0: %d\t art1: %d\tar2= %d\t\n",
sizeof(ar0)/sizeof(char), sizeof(ar1)/sizeof(char),
strlen(ar2));
return 0;
}
void show_str(char str[])
{
for(;*str != '\0';str++)
{
printf("%c ",*str);
}
printf("\n");
}
运行结果:
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