gpt4 book ai didi

c - 将字符串数组的地址传递给函数

转载 作者:行者123 更新时间:2023-11-30 19:42:01 26 4
gpt4 key购买 nike

我正在尝试将 strings_line_tokens 的地址传递给 split_string。我想我需要“&”作为地址,那么这些方法之一就可以工作。

static void split_string(const char *buffer, size_t buflen, char ***strings_line_tokens)
static void split_string(const char *buffer, size_t buflen, char **strings_line_tokens)
static void split_string(const char *buffer, size_t buflen, char **strings_line_tokens[])
static void split_string(const char *buffer, size_t buflen, char ***strings_line_tokens[])

这是我的声明以及我尝试将地址传递给函数的位置。

char *strings_line_tokens[503] = {0};
split_string(line, strlen(line)+1, &strings_line_tokens);

我不断收到此错误的一些变体。

warning: passing argument 3 of ‘split_string’ from incompatible pointer type main.c:73: note: expected ‘char ***’ but argument is of type ‘char * (*)[503]’

将变量正确传递给我的函数后,我的目标是执行此操作。之后我希望能够在 main.c 中使用这些值。

strings_line_tokens[*big_boy_counter] = malloc(strlen(ptr[i])+1);
strcpy(strings_line_tokens[*big_boy_counter], ptr[i]);

最佳答案

当你有

char *strings_line_tokens[503] = {0};

&strings_line_tokens 的类型为 char* (*)[503]
当您在函数调用中使用 string_line_tokens 时,它会衰减为类型 char**

如果您想使用第一种形式,则必须将函数声明为:

static void split_string(const char *buffer,
size_t buflen,
char* (*strings_line_tokens)[503]);
split_string(line, strlen(line)+1, &strings_line_tokens);
// ^^^ Using the & operator.

如果您想使用第二种形式,则必须将函数声明为:

static void split_string(const char *buffer,
size_t buflen,
char** strings_line_tokens);

split_string(line, strlen(line)+1, strings_line_tokens);
// ^ Not using the & operator.

选择吧。

关于c - 将字符串数组的地址传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33027471/

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