gpt4 book ai didi

c - 字符串指针数组的大小?

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:38 25 4
gpt4 key购买 nike

我有这些字符串和指向这些字符串的指针数组,定义如下(在 C 中):

char str0[]= "Hello World";
char str1[]= "Byebye Baby";
char str2[]= "Regtime Girl";
char str3[]= "My Darling";

char *str_table[] = {str0,str1,str2,str3};

我需要将 *str_table[](指针数组)传递给一个函数,该函数将扫描各种字符串以查找各种内容。问题是如何找出数组中指针的数量?似乎 sizeof() 没有像我想象的那样工作。

最佳答案

只有 str_table 变量可用,您才能恢复此信息。在这种情况下,您可以这样写:

sizeof(str_table) / sizeof(str_table[0])

如果您试图计算接收数组作为参数的函数的长度,那就太晚了。那时您无法恢复信息。如果您处于该位置,则必须将长度以及数组传递给函数。

函数可能如下所示:

void scan(const char* arr[], const size_t len)
{
for (size_t i=0; i<len; i++)
doSomething(arr[i]);
}

你这样调用它:

size_t len = sizeof(str_table) / sizeof(str_table[0]);
scan(str_table, len);

从函数内部来看,arr 是一个const char** 类型的指针。没有提供长度信息。

解决此问题的另一种方法是对数组进行空终止。像这样:

const char *str_table[] = { str0, str1, str2, str3, NULL };

这与用于 C 字符串的想法完全相同。您可以只将数组传递给函数,函数可以遍历数组直到遇到空指针。

关于c - 字符串指针数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22231522/

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