c语言字符串占据字节数

# include <stdio.h>
//字符串占据的字节数 
/*
不能将一个字符串常量赋给一个字符变量
为什么不能将一个字符串常量赋给一个字符变量?可以从两个方面作出解释:
前面讲过,字符变量用 char 定义。一个字符变量中只能存放一个字符。而字符串一般都有好多字符,占多字节。
所以不能将多个字符赋给只占一字节的变量。那么如果字符串常量的双撇号内什么都不写,
此时就只有一个字符 '\0',那么此时可不可以将它赋给字符变量?不可以!原因看下面第二点。
字符串是指一系列字符的组合。在 C 语言中,字符变量的类型用 char 定义。
我们这里讲的是数据类型,但是字符串不属于数据类型,也就不存在字符串变量。
一种类型的变量要想存储某个对象,必须能兼容该对象的数据类型,而字符串连数据类型都算不上,又怎么能将它赋给字符变量呢?
所以在 C 语言中,任何数据类型都不可以直接存储一个字符串。那么字符串如何存储?
在 C 语言中,字符串有两种存储方式,一种是通过字符数组存储,另一种是通过字符指针存储。
*/ 
int main()
{
    printf("%d\x20", sizeof(""));//\x20表示16进制,对应十进制32,对应的字符是空格 
    printf("%d\x20", sizeof("a"));
    printf("%d\x20", sizeof("CHINA"));
    printf("%d\x20", sizeof("How are you"));
    printf("%d\x20", sizeof("I love you"));
    printf("%d\n", sizeof("你好"));
    return 0;
}

结果:

posted @ 2021-03-06 20:01  myrj  阅读(2398)  评论(0编辑  收藏  举报