Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2017, 13:14   #1
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию Многомерный массив

Делаем int A[][] - двумерный массив
Вопросы
A - указатель на что?
A[] - массив указателей?

Где-то эта дурь была, но не могу найти.

Проблема - чем является многомерный массив в C?
Семантика - двумерный массив, это одномерный массив указателей на одномерные массивы. Но практически, компилятор должен строить единый блок с размерностью ширина на высота, а доступ реализуется пересчётом указателя типа *(A+ширина*номер_строки+номер_элеме нта_в_строке).

В книжках, которые у меня есть, этого точно нет. Даётся только синтаксис построения и работы, но содержание не раскрыто.

Последний раз редактировалось СтудПом; 24.11.2017 в 14:03.
СтудПом вне форума Ответить с цитированием
Старый 24.11.2017, 15:29   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

А не указатель, А - массив.
Не стоит путать эти два понятия.
Указателей на многомерные массивы в С нет.
waleri вне форума Ответить с цитированием
Старый 24.11.2017, 16:29   #3
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А не указатель, А - массив.
Технически, имя массива является указателем. Можно сделать указатель на число и массив чисел и эти две переменные будут совместимы по присваиванию и арифметике указателей.
СтудПом вне форума Ответить с цитированием
Старый 24.11.2017, 16:46   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Технически "массив" и "указатель" это разные вещи.
waleri вне форума Ответить с цитированием
Старый 24.11.2017, 17:08   #5
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Технически "массив" и "указатель" это разные вещи.
-не для C.

В C это одно и то же. Можете проверить на операциях присваивания. Так же в книгах можно встретить передачу массива в функцию с описанием в заголовке типа
Код:
void f(int *a)
Можете также проверить вместо операции индексации [] использовать указатель на начало массива (элемент массива) и операцию сложения с целым числом.
Код:
for (int  i=0; i<Size; ++i)
for (int *i=A; i<sizeof(int)*Size; ++i)
-если не ошибаюсь, будут эквивалентны
СтудПом вне форума Ответить с цитированием
Старый 24.11.2017, 17:16   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Начнем с простого:
char* ptr; printf("%u", sizeof(ptr));
char arr[10]; printf("%u", sizeof(arr));
waleri вне форума Ответить с цитированием
Старый 24.11.2017, 17:21   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
В C это одно и то же. Можете проверить на операциях присваивания. Так же в книгах можно встретить передачу массива в функцию с описанием в заголовке типа
Нет. Они могут приводиться. Как например вы можете присвоить флоат переменной инт значение.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многомерный массив $Optimus$ Помощь студентам 1 06.09.2013 20:39
многомерный массив fedkov2013 Паскаль, Turbo Pascal, PascalABC.NET 0 26.05.2013 11:47
многомерный массив. C# Serg94 Помощь студентам 8 13.12.2011 01:53
С++/С# многомерный массив DeFace Общие вопросы C/C++ 4 03.05.2009 16:07
Многомерный массив Iogan Gamba Puti Общие вопросы C/C++ 2 08.05.2008 15:20