|
Двумерный массив и указатель на него, Как объявить чтобы можно было обращаться massiv[x][y]? |
|
|
|
Jun 9 2009, 12:23
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Добрый день. Чтото не могу понять как правильно объявить указатель на двумерный массив чтобы компилятор не ругался. Есть такой массив: Код [b]unsigned int [/b] [i]__flash[/i] Program1[5][4] = { {0,0,0,0}, {1,1,1,1}, {2,2,2,2}, {3,3,3,3}, {4,4,4,4} } И есть некая структура управления в которой хочу создать указатель на этот двумерный массив: Код typedef struct { unsigned int __flash **program;//указатель на текущую исполняемую программу } stProgram;
stProgram Program; //экземпляр структуры Стоит задача сделать так чтобы используя указатель Program.program обращаться к двумерному массиву наиболее понятным образом Program.program[0][1] (без использования * и всяких смещений) Определил функцию инициализации масива Код void SetProgram(unsigned int __flash **program_addr) { Program.program = program_addr; } Компилятор ругается на вызов этой функции: Код SetProgram(&Program1[0][0]); Цитата Error[Pe167]: argument of type "unsigned int __flash (*)[4]" is incompatible with parameter of type "unsigned int __flash **"
|
|
|
|
|
 |
Ответов
|
Jun 9 2009, 14:34
|

Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581

|
Цитата(zltigo @ Jun 9 2009, 17:23)  Глупости. Вы пишите, что попало и получаете какие попало ошибки. Код typedef struct { int dm[8][8]; } dm_t; Ой! Рассажите об этом Ритчи.... А теперь добавьте волшебное слово __flash Код typedef struct { int __flash dm[8][8]; } dm_t; и Ритчи расскажет Вам: Цитата Error: ... storage modifier not allowed in this context
--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
|
|
|
|
|
Jun 9 2009, 15:59
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Вопрошающему: посторайтесь понять это и Вы найдёте ответ на свой вопрос... Код int *pointers[10] - это массив указателей int (*pointer)[10] - это переменная типа указатель на массив из десяти интов double (*sum(double,double))[3] - функция sum возвращает указатель на массив из 3 даблов to defunct: первые два совершенно разные типы. Вот пример их использования: Код pointers[0] = NULL; *pointer[0] = 10;
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Jun 9 2009, 18:32
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(demiurg_spb @ Jun 9 2009, 18:59)  to defunct: первые два совершенно разные типы. Вот пример их использования: Код pointers[0] = NULL; *pointer[0] = 10; Да как говорится что-то в глаз попало написал фигню, которую сразу же и удалил. (у Вас быстрая реакция  ) Конечно же это абсолютно два разных типа. Пример использования правда не очень очевиден, т.к. нам ничто не мешает сделать: *pointers[ 0 ] = 10; *pointer[ 0 ] = 10; Вот так будет более наглядно - sizeof ( pointers ) != sizeof( pointer )
|
|
|
|
Сообщений в этой теме
mempfis_ Двумерный массив и указатель на него Jun 9 2009, 12:23 777777 Цитата(mempfis_ @ Jun 9 2009, 16:23) unsi... Jun 9 2009, 12:33 zltigo Цитата(mempfis_ @ Jun 9 2009, 15:23) Чтот... Jun 9 2009, 12:43 mempfis_ Хорошо предположим я объявлю функцию с указателем ... Jun 9 2009, 12:56  MrYuran Цитата(mempfis_ @ Jun 9 2009, 16:56) Как ... Jun 9 2009, 13:03   mempfis_ ЦитатаТак прямо так и обращаться.
Program.program[... Jun 9 2009, 13:23    zltigo Цитата(mempfis_ @ Jun 9 2009, 16:23) комп... Jun 9 2009, 13:27    defunct Цитата(mempfis_ @ Jun 9 2009, 16:23) Так ... Jun 9 2009, 14:29 Goodefine А чего бы в таком виде не сделать:
Кодvalue_from_a... Jun 9 2009, 13:35 mempfis_ Цитата(Goodefine @ Jun 9 2009, 16:35) А ч... Jun 9 2009, 13:46  zltigo Цитата(mempfis_ @ Jun 9 2009, 16:46) К со... Jun 9 2009, 14:23 Goodefine Цитата(mempfis_ @ Jun 9 2009, 16:46) да и... Jun 9 2009, 13:50 mempfis_ КодВы сможете на плюсах. В обычном Си компиляторе ... Jun 9 2009, 13:58     defunct Цитата(demiurg_spb @ Jun 9 2009, 22:31) Д... Jun 9 2009, 21:23 Goodefine Я к тому, что решение проблемы автора при обращен... Jun 9 2009, 14:42 zltigo Цитата(Goodefine @ Jun 9 2009, 17:42) Я ... Jun 9 2009, 14:58 sergeeff Уважаемый коллега zltigo привел пример не совсем т... Jun 9 2009, 16:19 demiurg_spb Простите, но зачем городить структуру? Автор спраш... Jun 9 2009, 16:31  Dog Pawlowa Цитата(demiurg_spb @ Jun 9 2009, 19:31) А... Jun 9 2009, 16:58   demiurg_spb Цитата(Dog Pawlowa @ Jun 9 2009, 20:58) .... Jun 9 2009, 18:09  zltigo Цитата(demiurg_spb @ Jun 9 2009, 19:31) П... Jun 9 2009, 17:26 mempfis_ name=' date='Jun 9 2009, 19:19' post=... Jun 10 2009, 08:36  zltigo Цитата(mempfis_ @ Jun 10 2009, 11:36) Пер... Jun 10 2009, 09:16  Dog Pawlowa Цитата(mempfis_ @ Jun 10 2009, 11:36) Но ... Jun 10 2009, 09:19  ReAl Цитата(mempfis_ @ Jun 10 2009, 11:36) Во-... Jun 10 2009, 10:23   Wano ЫЫЫЫЫ чего-то не катит
typedef char TypeD[5][5]... Jun 13 2009, 21:13    AHTOXA Цитата(Wano @ Jun 14 2009, 03:13) ЫЫЫЫЫ ч... Jun 13 2009, 21:21    ReAl RE: Двумерный массив и указатель на него Jun 13 2009, 23:07     Wano Кодvoid func( unsigned size_y, unsigned size_x... Jun 13 2009, 23:44    XVR Цитата(Wano @ Jun 14 2009, 01:13) ЫЫЫЫЫ ч... Jun 15 2009, 09:18     sergeeff Цитата(XVR @ Jun 15 2009, 12:18) Мдя. Вы ... Jun 15 2009, 09:24      AHTOXA Цитата(sergeeff @ Jun 15 2009, 15:24) Зат... Jun 15 2009, 09:54 XVR Открою великую тайну - как сделать из массива (л... Jun 10 2009, 09:34 defunct Цитата(XVR @ Jun 10 2009, 12:34) Открою в... Jun 14 2009, 03:07  Wano не рычите люди. С тем, что через void* можно броси... Jun 14 2009, 09:16   Dog Pawlowa Цитата(Wano @ Jun 14 2009, 12:16) ...Дайт... Jun 14 2009, 09:39    Wano Конкретней : получаем в функции указатель:
void f... Jun 14 2009, 10:04     AHTOXA Цитата(Wano @ Jun 14 2009, 16:04) Вопрос:... Jun 14 2009, 10:12      sergeeff Цитата(AHTOXA @ Jun 14 2009, 14:12) Потом... Jun 14 2009, 10:31     Сергей Борщ Цитата(Wano @ Jun 14 2009, 13:04) то не п... Jun 14 2009, 10:16      Wano Цитата(Сергей Борщ @ Jun 14 2009, 13:16) ... Jun 14 2009, 10:34       sergeeff Цитата(Wano @ Jun 14 2009, 14:34) если за... Jun 14 2009, 10:51        Wano Цитата(sergeeff @ Jun 14 2009, 13:51) Жут... Jun 14 2009, 10:56         sergeeff Цитата(Wano @ Jun 14 2009, 14:56) как пос... Jun 14 2009, 11:11         Сергей Борщ Цитата(Wano @ Jun 14 2009, 13:56) как пос... Jun 14 2009, 11:33          Wano Ладно шариться по массиву можно хорошо и так:
void... Jun 14 2009, 12:48           ReAl Цитата(Wano @ Jun 14 2009, 15:48) uint8_t... Jun 14 2009, 14:20            aaarrr Цитата(ReAl @ Jun 14 2009, 18:20) По пово... Jun 14 2009, 16:07           Сергей Борщ Цитата(Wano @ Jun 14 2009, 15:48) мне хот... Jun 14 2009, 16:33 sergeeff Да, блин! Все рассказали, объяснили, примеры п... Jun 14 2009, 00:16 sergeeff Не хочет народ читать книги отцов-основателей.
Дл... Jun 14 2009, 10:08
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|