Как распечатать массив? - PullRequest
33 голосов
/ 15 марта 2012
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;
}

Я не могу получить массив для печати. ​​Есть идеи почему?Я начинающий программист, поэтому любые советы приветствуются.

Ответы [ 4 ]

26 голосов
/ 15 марта 2012

Что вы делаете, это печатаете значение в массиве в месте [3] [3], которое недопустимо для массива 3by3, вам нужно перебрать все пятна и напечатать их.1003 * Это напечатает его в следующем формате

10 23 42
1 654 0
40652 22 0

, если вы хотите более точное форматирование, вам придется изменить форматирование printf.

11 голосов
/ 12 марта 2013

В 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 голосов
/ 15 марта 2012

Похоже, что в вашем массиве есть опечатка, она должна выглядеть так:

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");
}
1 голос
/ 01 декабря 2014

Вы можете попробовать это:

#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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...