Как создать 2D массив? - PullRequest
       1

Как создать 2D массив?

0 голосов
/ 01 декабря 2018

При создании 2D массива.Я получаю сообщение об ошибке «Предупреждение о лишнем элементе в скалярном инициализаторе».

#include <stdio.h>
#include <conio.h>

int main(){
    int arr = {{'00','01','02'},{'10','11','12'},{'20','21','22'},{'30','31','32'}};

    for(int i=0;i<4;i++){
        for(int j = 0;j<4;j++){
            printf('%s', arr[i][j]);
        }
    }
    return 0;
}

1 Ответ

0 голосов
/ 01 декабря 2018

Правильный способ записи строк символов в исходном коде C - это кавычки ("), а не апострофы (').Апострофы предназначены для отдельных символов (или, в редких случаях, нескольких символов, объединенных в одно целое число).Таким образом, ваш printf должен быть:

printf("%s", arr[i][j]);

Похоже, вы хотите, чтобы ваш массив содержал либо строки символов, либо указатели на (первые символы) строк.Для последнего вы должны объявить ваш массив с char *, а не int.

Чтобы объявить массив, вы должны использовать скобки ([ и ]), чтобы дать ему размеры.Недостаточно просто перечислить несколько значений для него.Итак, ваша декларация должна быть:

char *arr[4][3] = {{"00","01","02"},{"10","11","12"},{"20","21","22"},{"30","31","32"}};

Для первого измерения все еще требуются скобки, но вы можете опустить число, чтобы компилятор мог получить его, подсчитав инициализаторы:

char *arr[][3] = {{"00","01","02"},{"10","11","12"},{"20","21","22"},{"30","31","32"}};

Индексы, которые вы используете с массивом, должны соответствовать его размерам.Вы перечислили только три инициализатора для каждой строки массива, поэтому кажется, что в этом измерении есть три элемента, но ваш цикл использует четыре:

for(int j = 0;j<4;j++){

Либо этот 4 должен быть изменен на 3или вы должны объявить массив как char *arr[4][4] и предоставить еще один элемент для каждой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...