首页 > 解决方案 > 谁能告诉我这种数据类型有多少字节?

问题描述

我在这里有一个作业,想知道这个数组有多少字节:

字符测试[]="测试";

我知道数据类型 char 有 1 个字节。但是这里有多少字节?

可能是一样的吗?

谢谢你们!

标签: carrayscharinitializationc-strings

解决方案


数组由字符串字面量的元素初始化

char test[]="test";

因此数组的元素数量与字符串字面量一样多,因为数组的大小没有明确指定。

内存中的字符串字面量表示为字符数组

char literal[] = { 't', 'e', 's', 't', '\0' };

也就是说,它有 5 个字符,包括终止零字符。所有这些字符都用于初始化数组。

所以数组的大小等于5 * sizeof( char )sizeof( char )总是等于1。所以数组的大小等于5

您可以通过调用标准 C 函数 printf 来检查这一点

printf( "sizeof( test ) = %zu\n", sizeof( test ) );

这是一个演示程序。

#include <stdio.h>

int main(void) 
{
    char test1[] = "test";

    printf( "sizeof( test1 ) = %zu\n", sizeof( test1 ) );

    char test2[] = { 't', 'e', 's', 't', '\0' };

    printf( "sizeof( test2 ) = %zu\n", sizeof( test2 ) );

    return 0;
}

它的输出是

sizeof( test1 ) = 5
sizeof( test2 ) = 5

推荐阅读