简单分析C语言中的字符数组和字符串

    作者:课课家教育更新于: 2016-11-28 16:50:42

    大神带你学编程,欢迎选课

      在了解了数组的基本概念后,C语言数组中的其中一个重要学习点便是字符数组和字符串。那么什么是C语言中的字符数组和字符串呢?它的作用又是什么呢?下面课课家小编就带大家了解字符数组和字符串的含义和作用。

    图1

      所谓字符数组,简单来说就是用来存放字符的数组称为字符数组,比如:

      chara[10];//一维字符数组

      charb[5][10];//二维字符数组

      charc[20]={'c','','p','r','o','g','r','a','m'};//给部分数组元素赋值

      chard[]={'c','','p','r','o','g','r','a','m'};//对全体元素赋值时可以省去长度

      字符数组实际上是一系列字符的集合,也就是字符串(String)。在C语言中,没有专门的字符串变量,没有string类型,通常就用一个字符数组来存放一个字符串。在C语言中规定,我们可以将字符串直接赋值给字符数组,比如:

      charstr[30]={"c.biancheng.NET"};

      charstr[30]="c.biancheng.net";//这种形式更加简洁,实际开发中常用

      数组第0个元素为'c',第1个元素为'.',第2个元素为'b',后面的元素以此类推。也可以不指定数组长度,比如:

      charstr[]={"c.biancheng.net"};

      charstr[]="c.biancheng.net";//这种形式更加简洁,实际开发中常用

      在C语言中,字符串总是以'\\0'作为串的结束符。上面的两个字符串,编译器已经在末尾自动添加了'\\0''\\0'是ASCII码表中的第0个字符,用NUL表示,称为空字符。通常情况下该字符既不能显示,也不是控制字符,输出该字符不会有任何效果,它在C语言中仅作为字符串的结束标志。puts和printf在输出字符串时会逐个扫描字符,直到遇见'\\0'才结束输出。具体大家可以观察下面的代码:

      #include

      intmain(){

      inti;

      charstr1[30]="http://c.biancheng.net";

      charstr2[]="CLanguage";

      charstr3[30]="Youareagood\\0boy!";

      printf("str1:%s\\n",str1);

      printf("str2:%s\\n",str2);

      printf("str3:%s\\n",str3);

      return0;

      }

      运行结果:

      str1:http://c.biancheng.net

      str2:CLanguage

      str3:Youareagood

      str1和str2很好理解,编译器会在字符串最后自动添加'\\0',并且数组足够大,所以会输出整个字符串。对于str3,由于字符串中间存在'\\0',printf()扫描到这里就认为字符串结束了,所以不会输出后面的内容。

      此时我们需要注意的地方是,用字符串给字符数组赋值时由于要添加结束符'\\0',数组的长度要比字符串的长度(字符串长度不包括'\\0')大1。比如:

      charstr[]="Cprogram";

      该数组在内存中的实际存放情况为9(图1):

    图1

    图1

      字符串长度为9,数组长度为10。

      本次简单分析C语言中的字符数组和字符串的教程到此暂告一段落,如果以后有补充的话小编会在此继续补充,同时也欢迎大家继续补充。最后希望这次的教程对大家学习C语言能起到一定的帮助!

C语言 更多推荐

课课家教育

未登录