Как передать полный 2D-массив в функцию в C - PullRequest
0 голосов
/ 09 марта 2020

Мне нужно использовать полный 2D-массив внутри функции. Я не могу использовать для, в то время, или делать-в то время. Я использую CodeBlocks для Windows (C Language) Вот пример кода (это не настоящий код, просто пример):

#include <stdio.h>
void reload(char* reload[2][6])
{
    printf(" _________________\n");
    printf("|%c|%c|%c|%c|%c|%c|\n", array[0][0], array[0][1], array[0][2], array[0][3], array[0][4], array[0][5]);
    printf("|%c|%c|%c|%c|%c|%c|\n", array[1][0], array[1][1], array[1][2], array[1][3], array[1][4], array[1][5]);
    printf(" -----------------\n");
}
int main()
{
    char* array[2][6];
    printf(" _________________\n");
    printf("|%c|%c|%c|%c|%c|%c|\n", array[0][0], array[0][1], array[0][2], array[0][3], array[0][4], array[0][5]);
    printf("|%c|%c|%c|%c|%c|%c|\n", array[1][0], array[1][1], array[1][2], array[1][3], array[1][4], array[1][5]);
    printf(" -----------------\n");
    reload(array);
    return 0;
}

Ответы [ 3 ]

1 голос
/ 09 марта 2020
  • Если вам нужен фактический 2D-массив из символов (то есть 2 строки), то это просто: char array[2][6];.
  • Инициализируйте этот массив перед его использованием. Например: char array[2][6] = {"hello", "world"};
  • Измените функцию соответствующим образом и избавьтесь от бессмысленного имени параметра:
    void reload(char array[2][6]).

Затем будет напечатано:

 _________________
|h|e|l|l|o| |
|w|o|r|l|d| |
 -----------------

Предполагая, что символьное представление нулевого терминатора "ничего не печатать" в вашей системе.

1 голос
/ 09 марта 2020

Вы ошиблись в названии параметра для функции reload; это должно быть array, а не reload:

#include <stdio.h>
void reload(char* array[2][6])
{
    printf(" _________________\n");
    printf("|%c|%c|%c|%c|%c|%c|\n", array[0][0], array[0][1], array[0][2], array[0][3], array[0][4], array[0][5]);
    printf("|%c|%c|%c|%c|%c|%c|\n", array[1][0], array[1][1], array[1][2], array[1][3], array[1][4], array[1][5]);
    printf(" -----------------\n");
}
int main()
{
    char* array[2][6];
    printf(" _________________\n");
    printf("|%c|%c|%c|%c|%c|%c|\n", array[0][0], array[0][1], array[0][2], array[0][3], array[0][4], array[0][5]);
    printf("|%c|%c|%c|%c|%c|%c|\n", array[1][0], array[1][1], array[1][2], array[1][3], array[1][4], array[1][5]);
    printf(" -----------------\n");
    reload(array);
    return 0;
}
0 голосов
/ 09 марта 2020

У вас есть еще одна проблема: вы передаете массив указателей и печатаете символы.

...