gpt4 book ai didi

c - 如何使用指向二维字符数组的指针?

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:29 27 4
gpt4 key购买 nike

我正在尝试将指针 (*test) 与二维字符数组 (a[][]) 结合使用。但我似乎无法弄清楚什么是正确的方法。我设法让它与 int 数组和 int 指针一起工作,但是当我更改为 char 时,相同的解决方案不起作用。我想我只是幸运地使用了整数,并没有真正找到合适的解决方案。正如您在代码中看到的那样,我想使用指针算法进行迭代。我目前的输出是乱码。

char a[WIDTH][HEIGHT] = { {'a','b'},{'c','d'},{'e','f'} };

char *test = (char *)a[0][0];

int x,y;

for (x = 0; x < WIDTH; x++)
{
for (y = 0; y < HEIGHT; y++)
{
printf("%c", test);
test = test + 1;
}
printf("\n");
}

最佳答案

printf("%c", test);

您正在尝试打印角色的地址,而不是它的值。取消引用指针以访问值:

printf("%c", *test);

此外,您需要将指针设置为实际指向数组中第一个元素的地址。目前,您正在强制指针滥用其值作为地址:

char *test = (char *)a[0][0];

将其更改为

char *test = &(a[0][0]);

通常,您应该在启用所有警告的情况下进行编译,并将其中的每一个都视为错误,除非您完全确定它不是。您还应该尝试不进行任何强制转换,除非您绝对确定自己需要强制转换,因为强制转换可能会使有用的编译器警告消失。

最后,我想补充一点,在我看来,这似乎是一种迭代数组的方法,它只是在询问 future 的问题。如果要表示连续内存,请使用单个 (1D) 数组。如果您想要类似网格的访问,请使用二维数组或更好的方法,提供具有表现力名称的函数。

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

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