lib I wrote int main() { int i; string given[40-6ren">
gpt4 book ai didi

C -> sizeof 字符串始终为 8

转载 作者:行者123 更新时间:2023-11-30 18:16:01 25 4
gpt4 key购买 nike

#include "usefunc.h" //don't worry about this -> lib I wrote
int main()
{
int i;
string given[4000], longest = "a"; //declared new typdef. equivalent to 2D char array
given[0] = "a";
printf("Please enter words separated by RETs...\n");
for (i = 1; i < 4000 && !StringEqual(given[i-1], "end"); i++)
{
given[i] = GetLine();
/*
if (sizeof(given[i]) > sizeof(longest))
{
longest = given[i];
}
*/
printf("%lu\n", sizeof(given[i])); //this ALWAYS RETURNS EIGHT!!!
}
printf("%s", longest);
}

为什么总是返回8???

最佳答案

C 中没有 string 数据类型。这是 C++ 吗?或者 string 是一个 typedef?

假设 stringchar * 的 typedef,您可能需要的是 strlen,而不是 sizeof。使用 sizeof 得到的 8 实际上是指针的大小(指向字符串中的第一个字符)。

关于C -> sizeof 字符串始终为 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4941142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com