【发布时间】:2021-03-16 11:29:42
【问题描述】:
不知何故,无论数组有多长,我的程序都会输出相同的大小,你知道我做错了什么吗?
char charArray[] = "STRING";
int size = sizeof(charArray) / 2 - 1;
printf("%d", size);
输出:3
(我必须创建一个程序来在另一个字符串中找到一个字符串,这就是为什么我在末尾减去 1 以找到我想要查找的单词的长度)
【问题讨论】:
-
当你在 C 中定义一个数组时,它有一个固定的长度。您的声明将长度隐式设置(并修复)为 7(“STRING\0”为 7 个字符长 - 最后您有一个不可见的 NULL)。
-
你是什么意思,“不管数组有多长”?你认为是什么导致数组的大小发生变化?你认为数组是是什么?
-
阅读 Modern C 和一些 C 标准,例如 n1570。在您的下一个问题中提供一些minimal reproducible example。阅读 C 编译器的文档GCC
-
你是如何让数组变长的?
-
该代码不输出 3。它从 (7 / 2 - 1) 输出 2。