字符数组和字符串的区别与用法
区别
1:C语言中没有用于表示字符串的关键字以数组形式将字符串输出,字符串由C的字符数组变形而成,末尾加上'\0',字符串比字符数组多一个'\0'.
2:通常,在程序中使用字符串常量会生成一个“指向字符的常量指针”,当字符串常量出现在表达式中时,表达式所使用的值就这些字符所储存的地址。
3:字符串常量:字符串常量不能被修改,因为是共同的,指针类型的字符串常量只占四个字节;字符数组:如果想将一个字符串存放到变量中,必须使用字符数组,就是用一个字符型数组存放一个字符串。
4:C语言中,字符串是双引号括起来的单个或多个字符的集合,编译器自动在结尾加上'\0'字符。字符串常量储存在只读数据段,无法通过指针进行修改字符串中的某个字符。
5:C语言中,不能定义字符串,但是可以使用,通常会用字符数组来模拟字符串,必须是以'\0'结尾,那该字符数组就是普通的字符数组,不是字符串。
6:字符串常量本质上是一个无名的字符数组。
用法
1:定义字符数组
char s[100];
在字符数组中一个元素存放一个字符。
2:输入字符数组
i=0; while((a[i]=getchar())!='\n'){
i++;}
或
getchar();
char ch;
while(ch=getchar()!='\0'){
}
等等
这样输入直到遇到回车就结束输入。
3:调用时,如一般数组一样,一般用循环语句遍历,也不可直接赋值。
————————————————————————————————————————————————————————————————————————
1:定义字符串:
char s[]="happy"
或
char s[6]="happy"
因为定义字符串时,编译器会帮你数有几个元素,我们自己设定大小也可,但是要注意末尾的'\0',也占了位置。
2:输入字符串
键盘输入法 gets(s); ______可输入空格;
scanf("%s",s); 输到空格便停止输入
3:调用
跟字符数组相似,有一个结尾字符\0;
#include<stdio.h> #include<string.h> int main(){ char* s="tangtao"; char s2[10]={'t','a','n','g','t','a','o'} for(int i=0;i<10;i++) printf("s2[i]=%c\n",s2[i]); printf("sizeof(s)=%ld\n",sizeof(s)); printf("strlen(s)=%ld\n",strlen(s)); printf("sizeof(s2)=%ld\n",sizeof(s2)); return 0; }