【问题标题】:sizeof() returning different values even when the two variables contain the same string [duplicate]即使两个变量包含相同的字符串,sizeof() 也会返回不同的值
【发布时间】:2019-05-20 18:12:29
【问题描述】:

对于同一个字符串值,我在 sizeof 上得到不同的值。

当我在 C 中运行以下代码时:

char str[] = "November";
char *s = "November";
printf(" str[] = %ld\n",sizeof(str));
printf(" *s = %ld\n",sizeof(s));

预期输出:

str[] = 9
*s = 9

实际输出:

str[] = 9
*s = 8

究竟发生了什么?

【问题讨论】:

标签: c arrays string pointers sizeof


【解决方案1】:
  • sizeof(str)char 数组 str 的大小,它包含 9 个元素(包括空终止符),因此是 9 个字节。

  • sizeof(s) 是指向char 的指针的大小,在您的系统上是 8 个字节

【讨论】:

  • 有什么方法可以从 *s 中获取字符串的大小?
  • 没有。 *s 现在是字符串的第一个字符,所以 sizeof(*s) 将是 1。
【解决方案2】:

sizeof() 不是 strlen()

指针的大小不是指向元素的大小

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2016-11-20
    相关资源
    最近更新 更多