|
|
  |
Инициализация массивов в C |
|
|
|
Jan 23 2009, 08:55
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Цитата(MrYuran @ Jan 23 2009, 10:39)  Многомерные массивы определяются в Си немного по-другому: type array_name [N1][N2]...[Nk] где type - тип, array_name - имя массива, N1...Nk - длина каждой размерности
В памяти такой массив будет представлен как совокупность одномерных массивов, расположенных друг за другом Это мне известно. Ве дело в том, что компилятор массив типа array[x, y, z] хватает и не ругается. Мне интересна внутренняя форма представления такого массива.
|
|
|
|
|
Jan 23 2009, 09:10
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(inventor @ Jan 23 2009, 11:55)  Мне интересна внутренняя форма представления такого массива. Вот открыл учебник. многомерный массив, начиная с младшего адреса: array[x][y][ z]={ (0,0,0),(0,0,1),...(0,0,z-1), (0,1,0),(0,1,1),...(0,1,z-1), ... (0,y-1,0),(0,y-1,1),...(0,y-1,z-1), (1,0,0),(1,0,1),...(1,0,z-1), ... (1,y-1,0),(1,y-1,1),...(1,y-1,z-1), . . . (x-1,1,0),(x-1,1,1),...(x-1,1,z-1), ... (x-1,y-1,0),(x-1,y-1,1),...(x-1,y-1,z-1) } Кстати, можно его прямо так инициализировать при объявлении (только без круглых скобок, это я так индексы обозначил, надеюсь понятно)
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jan 23 2009, 09:19
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Цитата(MrYuran @ Jan 23 2009, 12:10)  Вот открыл учебник. многомерный массив, начиная с младшего адреса: array[x][y][ z]={ (0,0,0),(0,0,1),...(0,0,z-1), (0,1,0),(0,1,1),...(0,1,z-1), ... (0,y-1,0),(0,y-1,1),...(0,y-1,z-1), (1,0,0),(1,0,1),...(1,0,z-1), ... (1,y-1,0),(1,y-1,1),...(1,y-1,z-1), . . . (x-1,1,0),(x-1,1,1),...(x-1,1,z-1), ... (x-1,y-1,0),(x-1,y-1,1),...(x-1,y-1,z-1) }
Кстати, можно его прямо так инициализировать при объявлении (только без круглых скобок, это я так индексы обозначил, надеюсь понятно) Как проинициализиовать многомерный массив я знаю. Еще раз говорю, что это за массивы вида array[i,j,z]; Где их размерности (несколько штук) пишутся внутри скобок.
|
|
|
|
|
Jan 23 2009, 10:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Это в Паскале допускается записывать обращение к элементу массива в виде array[x,y,z] наряду с array[x][y][z], в С такого не предусмотрено. А почему С не ругается на такое  , так это потому что в С есть такой оператор - "запятая".
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
Jan 23 2009, 10:54
|
Местный
  
Группа: Свой
Сообщений: 474
Регистрация: 20-01-09
Из: НН
Пользователь №: 43 639

|
Цитата(inventor @ Jan 23 2009, 12:19)  Как проинициализиовать многомерный массив я знаю. Еще раз говорю, что это за массивы видаarray[i,j,z]; Где их размерности (несколько штук) пишутся внутри скобок. А почему нельзя объявить этот массив, проинициализировать его числами до компиляции, так чтобы тоже не ругался, и в симуляторе посмотреть, что он там накомпилировал.
Сообщение отредактировал tAmega - Jan 23 2009, 10:56
--------------------
пользователь отключен
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|