char*[] 元素每个占用 4 个字节,而 char[] 每个元素占用 1 个字节?

标签 c arrays pointers

为什么下面代码的输出是这样的?

char str[] = {'i', 't', 'i', 's', 'm', 'e', '\0'}; //this code equates to 7 bytes
char* str[] = {'i', 't', 'i', 's', 'm', 'e', '\0'}; //this code equates to 28 bytes

最佳答案

这段代码并不像你想的那样。它使用 char 常量来初始化 char* 指针数组的元素。这样的“指针”不会指向您的角色;相反,它们具有相应字符的数值!

您系统上的每个字符指针都是 4 个字节长,这解释了结果。

关于char*[] 元素每个占用 4 个字节,而 char[] 每个元素占用 1 个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37514993/

相关文章:

c - 是否可以用 C 中的线程打开一个新的 Linux 终端?

c - strchr()、APT_String 和减法运算

javascript - 排序数组,使空值项出现在最后

c - 将文本文件中的行读入数组

c - 数组的空闲分配内存(与普通变量相比?)

c - 带视频的opencv圆检测

c - 为 RANSAC 采样生成两个随机数

c# - 如何制作一个结构来跟踪一些 TreeView 和 ListView 项目?

C++:引用和指针的_实现_有什么大的不同

objective-c - 将枚举与 NSNumber 进行比较