gpt4 book ai didi

c - 如何创建指向二维数组的指针数组

转载 作者:行者123 更新时间:2023-11-30 17:22:23 24 4
gpt4 key购买 nike

我真的不知道该怎么解释。请多多包涵。
我尝试将二维数组传递到函数 string[][] 中,在该函数中我将创建一个指向我传入的数组的指针。我将比较中的元素字符串[][]

//From main
char string[3][3] = {"cat","dog","bat"};
//From function
declare a pointer which points to string;
if (strcpm(string[1],string[2]) == 1)
{
pointer[1] value set to address of string[2];
pointer[2] value set to address of string[1]
}
printf("%s", *(pointer));

我不想修改string[3][3],那么该函数将退出该函数而不返回任何内容
我有这个想法,但我不知道如何声明pointer,请帮助我。谢谢!可视化

In main                     In function
string ptr
cat 1000
dog 1008
bat 1012
Do compare
dog > bat
ptr[3] = address of dog;
ptr[2] = addess of bat;
printf("%s", *(ptr+1);
printf("%s", *(ptr+2);
quit function, return nothing

最佳答案

对于接受字符串数组的函数(不是指向字符串的指针数组,这是不同的):

void func(size_t rows, size_t cols, char strings[rows][cols])
{
char const *pointers[rows];

// Initialize each pointer to point to each row
for (size_t i = 0; i < rows; ++i)
pointers[i] = &strings[i][0];

// here you can manipulate the pointers, e.g. bubble sort them

printf("%s\n", pointers[0]);
}

调用此函数:

int main()
{
char stuff[4][20] = { "cat", "dog", "snuffleupagus", "horse" };

func(4, 20, stuff);
}

专业提示:您可以计算数组维度,而不是使用魔数(Magic Number):

#define LENGTH_OF(array) ( sizeof(array) / sizeof((array)[0]) )

char stuff[][20] = { "cat", "dog", "snuffleupagus", "horse" };
func( LENGTH_OF(stuff), LENGTH_OF(stuff[0]), stuff );

如评论中所述,请注意第二个维度(在我的例子中为20)。 C 允许使用长度完全相同的字符串来初始化 char 数组,在这种情况下,该数组最终将不包含字符串(即,它将包含非空终止的字符)。

关于c - 如何创建指向二维数组的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28034826/

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