C语言中的字符串


在C语言中,把用一对双撇号所括起来的0个或多个字符序列成为字符串常数。字符串并不存放在一个变量中,而是存放在一个字符型数组中。


1.  char a[] = "123" 和 char b [] ={'1','2','3'}的区别:

    sizeof(a)=4     sizeof(b)=3

2.  char s[] = "abc";和char* s = "abc";的区别:

    前"abc"储存在内存区域中的栈中,内容可以更改。(字符串变量)

    后者"abc"储存在内存区域中的常量数据区,内容不可更改;(字符串常量)

    存在常量区的内容会缓存起来,下次遇到相同的常量就不会开辟新的存储空间。

    例:char *s1 = “abc”; char *s2 = “abc”;

        s1==s2  (指向相同的地址)

3. ‘\0’ 的ASCII码是0

    char a[] =”123”; 等价于 char a[] = {‘1’ ,‘2’ , ‘3’ , 0 };

4. ‘\0’ 的作用:

    char name[] = “it”;

    char name2[] = { ‘o’ , ‘k’ };

    printf(“%s”,name2);      //输出为:okit。原因是printf name2[0]开始输出字符直到遇到\0结束

    int size = strlen(name2);   //size ==4

 

5.  利用指针保存字符串数组:

    char*names[3] = {“jack” , “rose” , “taitan” };


6.  单个汉字在字符串中所占字节:

    编码方式不同会导致单个汉字所占字节数不同。ANSI编码中为2个字节,UTF-8编码中为3个字节。

      可以通过以下实验可以证明:

      新建文本文档,用记事本打开,输入以下代码:

#include <stdio.h>
#include <string.h>

int main()
{
    int size = strlen("哈ha");
    printf("%d",size);
    return 0;
}
     文件——另存为——保存类型(所有文件)——文件名(size1.c)——编码(ANSI)——保存。
     在编码选项中可以看到记事本的默认编码方式为 ANSI 。
     文件——另存为——保存类型(所有文件)——文件名(size2.c)——编码(UTF-8)——保存。

    分别编译连接两个文件,然后运行。

    




posted @ 2014-08-13 11:17  coderkl  阅读(340)  评论(0编辑  收藏  举报