关于char数组和字符串的一些问题

来源:互联网 发布:淘宝店铺说手机保修 编辑:程序博客网 时间:2024/05/21 20:23

如果有人问我char数组和字符串的区别,说实话,我回答不出。过去的学习看来的确比较马虎,基础十分不牢靠。。。汗~~
这次重新看《C++ Primer Plus》,看了第四章,对这个问题有了比较清楚的概念。
C或者类C的语言中,字符串都是以空值字符结尾(null character)。
在具体实现中,写作"/0"。
它的ASCII码值为0,归根结底,是否以"/0"结尾成为判断字符串和char数组的关键所在。
下面是我用c写的一个小例子
#include"stdio.h"
main()
{
int i;
char array1[5]={'B','A','a','I','a'};
char array2[5]={'B','A','/0','I','a'};
char string1[]="C program";
char string2[]="C/0 program";
 for(i=0;i<=4;i++)
  {
     printf("%c",array1[i]);

    }
  printf("/n");
 for(i=0;i<=4;i++)
  {
     printf("%c",array2[i]);
    }
  printf("/n");
   printf("%s/n",string1);
   printf("%s",string2);
getch();
}

输出是:BAaIa
       BA Ia
       C program
       C

显然,在字符串中,编译器一旦捕捉到"/0"的出现,就认为字符串到此为止,停止操作。
而在数组中,"/0"仅仅被当作一个空字符处理。
在某些程序中,要注意区别对待这两者。

原创粉丝点击