C 有人能告诉我这个数据类型有多少字节吗?
我有一个家庭作业想知道这个数组有多少字节: 字符测试[]=“测试” 我知道数据类型char有1个字节。但这里有多少字节 可能是一样的吗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 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