【发布时间】:2020-02-02 00:43:52
【问题描述】:
我这里有一个作业,想知道这个数组有多少字节:
char test[]="test";
我知道数据类型 char 有 1 个字节。但是这里有多少字节?
可能是一样的吗?
谢谢大家!
【问题讨论】:
-
有一个 C 运算符可以准确地告诉你——
sizeof。
标签: c arrays char initialization c-strings
我这里有一个作业,想知道这个数组有多少字节:
char test[]="test";
我知道数据类型 char 有 1 个字节。但是这里有多少字节?
可能是一样的吗?
谢谢大家!
【问题讨论】:
sizeof。
标签: c arrays char initialization c-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
【讨论】: