C 有人能告诉我这个数据类型有多少字节吗?

C 有人能告诉我这个数据类型有多少字节吗?,c,arrays,char,initialization,c-strings,C,Arrays,Char,Initialization,C Strings,我有一个家庭作业想知道这个数组有多少字节: 字符测试[]=“测试” 我知道数据类型char有1个字节。但这里有多少字节 可能是一样的吗 谢谢大家! 数组由字符串文本的元素初始化 char test[]="test"; 因此,数组的元素数量与字符串文字的元素数量相同,因为数组的大小没有明确指定 内存中的字符串文字表示为字符数组 char literal[] = { 't', 'e', 's', 't', '\0' }; 也就是说,它有5个字符,包括终止零字符。所有这些字符都用于初始化数组 因此

我有一个家庭作业想知道这个数组有多少字节:

字符测试[]=“测试”

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

可能是一样的吗


谢谢大家!

数组由字符串文本的元素初始化

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;
}

有一个C操作符可以准确地告诉你-
sizeof
。哦,天哪。非常感谢你!成功了。我不知道现在有一个函数可以告诉我有多少字节。谢谢@majack它不是一个函数。它是一个返回数组大小的运算符。您可以编写例如sizeof test1而不是sizeof(test1)。请考虑数组可以大于它所包含的字符串。在这种情况下,要确定存储字符串的大小,必须使用标准C函数strlen。
sizeof( test1 ) = 5
sizeof( test2 ) = 5