gpt4 book ai didi

c - 将 Char 数组传递给 C 中的函数

转载 作者:行者123 更新时间:2023-11-30 15:08:55 25 4
gpt4 key购买 nike

我无法从函数中的 main 访问数组。我该如何纠正这个问题?每当我编译它时,都会说参数 1 是 **char 类型,并且参数 1 传递给 fre 是不兼容的。我需要更改任何语法吗?

void fre(char *asd);

int main()

{
char *names[7]={"Jayan Tennakoon","John Long","Robert Lang"};

int i;

for(i=0;i<7;i++)
{

printf("%s\n",names[i]);

}

fre(names);

return 0;

}

void fre(char *asd)
{
int i;

for(i=0;i<7;i++)
{

printf("%s\n",asd[i]);

}
}

最佳答案

您已经声明了一个由 7 个指向 char 的指针组成的数组。您用其中的 3 个对其进行了初始化。您需要传递一个指针数组,而不是指向字符数组的指针。根据评论,我将添加更多方法来声明数组,这可能会清楚地表明不同方法的实际含义。

#include <stdio.h>
#include <stdlib.h>

void fre(char *asd[]);

int main(void) {
char * name [ ] = {"Jayan Tennakoon","John Long","Robert Lang"};
char * names [7] = {"Jayan Tennakoon","John Long","Robert Lang"};
char names2[7] = {'H', 'e', 'l','l','o','\0'};
char **names3 = names;

printf("names2 = %s\n",names2);
printf("names3[0] = %s\n",names3[0]);
int i;
for(i = 0; i < 3; i++) {
printf("%s\n",names[i]);
}
fre(names);
return 0;

}

void fre(char *asd[]) {
int i;
for(i = 0; i < 3; i++) {
printf("%s\n",asd[i]);
}
}

我还必须将循环从 7 减少到 3,否则您会遇到未定义的行为,如果幸运的话,这将是段错误,如果不幸的话,可能会出现打印了垃圾,但退出时返回状态为 0。

关于c - 将 Char 数组传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37033837/

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