Как печатать массив?
int main() {
int my array[3][3] =
10, 23, 42,
1, 654, 0,
40652, 22, 0
};
printf("%d\n", my_array[3][3]);
return 0;
}
Я не могу получить массив для печати. Любые идеи, почему? Я начинаю программист, поэтому любые слова совета ценятся.
Ответы
Ответ 1
То, что вы делаете, это печатать значение в массиве в точке [3] [3], что неверно для массива 3by3, вам нужно перебрать все пятна и распечатать их.
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
Это напечатает его в следующем формате
10 23 42
1 654 0
40652 22 0
если вы хотите более точное форматирование, вам придется изменить способ форматирования printf.
Ответ 2
В C. не существует свойства .length. Свойство .length может быть применено только к массивам в языках с объектно-ориентированным программированием (ООП). Свойство .length наследуется от класса объекта; класс всех других классов и объектов, наследуемых на языке ООП. Кроме того, можно использовать .length-1 для возврата номера последнего индекса в массив; используя только .length, вернет общую длину массива.
Я бы предложил что-то вроде этого:
int index;
int jdex;
for( index = 0; index < (sizeof( my_array ) / sizeof( my_array[0] )); index++){
for( jdex = 0; jdex < (sizeof( my_array ) / sizeof( my_array[0] )); jdex++){
printf( "%d", my_array[index][jdex] );
printf( "\n" );
}
}
Строка (sizeof (my_array)/sizeof (my_array [0])) даст вам размер массива, о котором идет речь. Свойство sizeof возвращает длину в байтах, поэтому нужно делить общий размер массива в байтах на количество байтов, составляющих каждый элемент, каждый элемент занимает 4 байта, потому что каждый элемент имеет тип int, соответственно. Массив имеет размер 16 байт, каждый элемент имеет 4 байта, поэтому 16/4 дает 4 общее количество элементов в вашем массиве, потому что индексация начинается с 0, а не 1.
Ответ 3
Похоже, у вас есть опечатка на вашем массиве, он должен читать:
int my_array[3][3] = {...
У вас нет _
или {
.
Также my_array[3][3]
является недопустимым местоположением. Поскольку компьютеры начинают отсчет с 0
, вы получаете доступ к позиции 4
. (Массивы такие странные).
Если вы хотите только последний элемент:
printf("%d\n", my_array[2][2]);
Если вы хотите весь массив:
for(int i = 0; i < my_array.length; i++) {
for(int j = 0; j < my_array[i].length; j++)
printf("%d ", my_array[i][j]);
printf("\n");
}
Ответ 4
Вы можете попробовать следующее:
#include <stdio.h>
int main()
{
int i,j;
int my_array[3][3] ={10, 23, 42, 1, 654, 0, 40652, 22, 0};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d ", my_array[i][j]);
}
printf("\n");
}
return 0;
}