C语言之字符串----5.27
C语言中的字符串有两种表示方式,一是字符数组,二是字符指针。
一、字符数组
1.定义形式
char 变量名[常量表达式];
2.初始化形式
有三种初始化形式
①.char c[5]={'a','b','c','d','e'};
②.char c[10]={"tasklist"};
③.char c[10]="tasklist"
注意:·如果初始化初值个数大于数组长度会报错;若初值个数小于数组长度,系统会为剩余元素自动赋值为'\0'。
·两种初始化形式的不同
例:char a1[5]={'a','b','c','d','e'};与char a2[]="abcde",
初始化后数组中各元素值为:c1="abcde",c2="abcde\0"
3.赋值方式
char m1[20]="Hello",m2[20];
strcpy(m2,m1);
4.输入输出形式
①.输入形式
char str[10];
scanf("%s",str);或gets(str);
②.输出形式
利用下标输出单个字符
printf("%c",str[i]);
直接输出整个字符串
printf("%s",str);
二、字符指针
1.定义形式
char *指针变量名;
2.初始化形式
①.char *p;
*p="tasklist";
注意:字符数组无法像字符指针一样赋值,即:char a[10]; a[10]="ipconfig";是不成立的。
3.赋值方式
char *p1="Hello",p2; p2=p1;
4.输入输出形式
①.输入形式
用字符数组为存储空间
char *p,str[10];
*p=str;
scanf("%s",p);
用malloc为存储空间
char *p = malloc(sizeof(char)*20);
scanf("%s",p);
注意:*p接受字符串输入时,必须先开辟存储空间
②.输出形式
利用下标输出单个字符
printf("%c",p+i);
直接输出整个字符串
printf("%s",p);
三、字符数组与字符指针的区别
三点区别:
1. 存放内容不同。
字符指针变量中存放的是字符串的首地址;
字符数组存放的是若干个数组元素,每个元素对应一个字符
2.赋初值的方式不同。
字符指针初始化:
char *s=“Hello”;等价于:char *s; s=“Hello”;
字符数组初始化:static char m[10]=“Hello”;
不可以为: static char m[10];m[]=“Hello”;
3.赋值方式不同。
字符数组(或字符串)之间不能进行赋值运算,如需赋值时只能单个字符为每个元素赋值或使用strcpy函数。如:
static char m1[20]=“Hello” , m2[20]; strcpy(m2,m1);
字符指针无此限制。如:
char *s1=“Hello”, *s2; s2=s1;