c - 即使两个变量包含相同的字符串,sizeof() 也返回不同的值

标签 c arrays string pointers sizeof

<分区>

对于相同的字符串值,我在 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

实际发生了什么?

最佳答案

  • sizeof(str)char 数组 str 的大小,它包含 9 个元素(包括空终止符),因此9 个字节。

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

关于c - 即使两个变量包含相同的字符串,sizeof() 也返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53865008/

相关文章:

c - 从环境变量生成 #include 宏

python - 用于编辑 numpy 计数数组的一行解决方案? (Python)

java - 如何对由 "null"和字符串组合的数组进行排序?

java - 不区分大小写的 String.contains 方法的替代方法是什么?

c - 释放 C 中动态内存的第一部分

c - 数据类型 : float, 在 C 中的长转换

python - 在 python 中使用 numpy 获取避免 nan 的平均值

PHP - 如何获取 n 深多维数组的所有数组值?

php - 在php中将从MySQL查询获得的string/val转换为int?

c++ - 不带星号的函数指针参数