gpt4 book ai didi

c - 求char**形式的字符串数组的长度?

转载 作者:行者123 更新时间:2023-11-30 17:05:39 33 4
gpt4 key购买 nike

我知道如何找到以这种方式初始化的字符串数组的长度

char* arr[] = {"some", "thing"};

就这样做,

size_t length = sizeof(arr)/sizeof(char*);

你得到的长度是 2,是吗?但我假设 char** 与上面的 char* 数组是一样的,并且整个 sizeof 东西不适用于它(我至少知道它是一个指向指针的指针)。我到处寻找,试图找到一种方法来获取存储为 char** 而不是 char* [] 的数组的长度,但我觉得我对如何做到这一点还不够了解,甚至尽管看起来应该非常简单。

在我的程序中,我已经有一个 char** 数组,其值位于索引 0...n 处,当我尝试使用上述方式获取长度时,长度始终为 1。

有什么帮助吗?

最佳答案

有一种方法可以做到:

char* arr[] = {NULL, NULL, NULL}; 
printf("%d\n", sizeof(arr)/sizeof(*arr));

这会打印出3。不过,这种方法有一个问题,您可能没有意识到 - 它仅在 arr 大小被称为编译时时有效 - 这意味着,确切的大小在方括号中提供(并且您应该无论如何,使用常量而不是 sizeof ),或者像我们的两个示例中那样提供初始化列表(我认为这是使用数组的 sizeof 的唯一合法情况)。如果您以任何其他方式定义数组,例如下面的 arr2:

char** arr2 = arr;

这不会起作用,而且会得到 1,如你所说。

关于c - 求char**形式的字符串数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35164731/

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