【问题标题】:Can anyone say me how much byte this data type has?谁能告诉我这种数据类型有多少字节?
【发布时间】:2020-02-02 00:43:52
【问题描述】:

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

char test[]="test";

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

可能是一样的吗?

谢谢大家!

【问题讨论】:

  • 有一个 C 运算符可以准确地告诉你——sizeof

标签: c arrays char initialization c-strings


【解决方案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;
}

它的输出是

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

【讨论】:

  • 天哪。太感谢了!有效。我现在不知道有一个函数可以告诉我有多少字节。谢谢!
  • @majack 这不是一个函数。它是一个返回数组大小的运算符。例如,您可以编写 sizeof test1 而不是 sizeof( test1 )。考虑到数组可以大于它包含的字符串。在这种情况下,要确定存储字符串的大小,您必须使用标准 C 函数 strlen。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
相关资源
最近更新 更多