数据总线 发表于 2024-2-28 17:20:28

FishC 发表于 2024-2-28 17:19
非常抱歉,我之前的回答有误。在指针数组中,你需要使用指针来访问数组的元素,并且拿到数组长度也需要 ...

arr1 length: 1 2 3 4 5 8 0 0
arr2 length: 6 7 8 9 10 1 2 3
arr3 length: 11 12 13 14 15 6 7 8
arr4 length: 16 17 18 19 20 11 12 13
arr5 length: 21 22 23 24 25 16 17 18这回的运行结果

FishC 发表于 2024-2-28 17:21:00

数据总线 发表于 2024-02-28 17:20
arr1 length: 1 2 3 4 5 8 0 0
arr2 length: 6 7 8 9 ...

非常抱歉,之前的代码还是有问题。这里有一种修正方案:#include int main() {    unsigned char arr1[] = {1, 2, 3, 4, 5};    unsigned char arr2[] = {6, 7, 8, 9, 10};    unsigned char arr3[] = {11, 12, 13, 14, 15};    unsigned char arr4[] = {16, 17, 18, 19, 20};    unsigned char arr5[] = {21, 22, 23, 24, 25};    unsigned char *arr_tab[] = {arr1, arr2, arr3, arr4, arr5};    int arr_count = sizeof(arr_tab) / sizeof(arr_tab);    for (int i = 0; i < arr_count; i++) {      unsigned char *current_arr = arr_tab;      int arr_length = sizeof(current_arr) / sizeof(current_arr);      printf("arr%d length: ", i + 1);      for (int j = 0; j < arr_length; j++) {            printf("%d ", current_arr);      }      printf("\n");    }    return 0;}在这个修正后的代码中,我们使用了数组来存储每个数组的元素,并且使用 `sizeof(arr_tab) / sizeof(arr_tab)` 来计算指针数组的长度。然后,我们使用 `sizeof(current_arr) / sizeof(current_arr)` 来计算每个数组的长度,并通过循环遍历打印出每个数组的元素。非常抱歉之前的回答还是有误导性,希望这次的回答是正确的。如果还有任何问题,请随时追问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

数据总线 发表于 2024-2-28 17:22:47

FishC 发表于 2024-2-28 17:19
非常抱歉,我之前的回答有误。在指针数组中,你需要使用指针来访问数组的元素,并且拿到数组长度也需要 ...

还是不行,要不我再想想看吧,非常感谢你耐心的回答,谢谢你~~~

FishC 发表于 2024-2-28 17:23:23

数据总线 发表于 2024-02-28 17:22
还是不行,要不我再想想看吧,非常感谢你耐心的回答,谢 ...

非常抱歉,之前的回答依然有误。在你的代码中,arr1、arr2、arr3、arr4和arr5都是单个字符变量,并不是数组。所以我们无法通过指针数组访问它们。如果你想访问它们并输出元素,可以直接使用原始的方式来操作。例如,你可以修改data_Send函数来接收cnt参数,并根据cnt的值选择对应的变量进行操作。以下是修改后的代码示例:

#include <stdio.h>

void data_Send(unsigned char cnt) {
    unsigned char *arr;
    if (cnt == 0) {
      arr = &arr1;
      printf("arr1 length: ");
    } else if (cnt == 1) {
      arr = &arr2;
      printf("arr2 length: ");
    } else if (cnt == 2) {
      arr = &arr3;
      printf("arr3 length: ");
    } else if (cnt == 3) {
      arr = &arr4;
      printf("arr4 length: ");
    } else if (cnt == 4) {
      arr = &arr5;
      printf("arr5 length: ");
    } else {
      printf("Invalid input");
      return;
    }

    for (int i = 0; i < 8; i++) {
      printf("%d ", arr);
    }
    printf("\n");
}

int main() {
    data_Send(0);

    return 0;
}

这段代码中,我们根据传入的cnt值判断要操作的变量,并用指针arr指向对应的变量。然后,使用for循环遍历arr指针所指向的变量,并打印出每个元素。

希望这次能够帮到你,如果还有任何问题,请随时提问。感谢你的耐心和理解!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: 1 [2]
查看完整版本: 指针数组的遍历