字符数组和字符串的区别与用法


区别

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;
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM