реклама на сайте
подробности

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


Профессионал
*****

Группа: Свой
Сообщений: 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 **"
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Goodefine
сообщение Jun 9 2009, 13:35
Сообщение #2


Местный
***

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



А чего бы в таком виде не сделать:
Код
value_from_array=array_access(Program.program,x,y);

Все довольно прозрачно...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Jun 9 2009, 13:46
Сообщение #3


Профессионал
*****

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



Цитата(Goodefine @ Jun 9 2009, 16:35) *
А чего бы в таком виде не сделать:
Код
value_from_array=array_access(Program.program,x,y);

Все довольно прозрачно...


Это отдельная фукция которую не хотелось-бы вводить (да и нет смысла её вводить если можно достучаться через *(......)).
К сожалению через -> тоже не работает.
Приду домой почитаю в книге как это можно сделать (жаль на работе её нет, так хотелось до конца рабочего дня разобраться с этим вопросом).
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 9 2009, 14:23
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(mempfis_ @ Jun 9 2009, 16:46) *
К сожалению через -> тоже не работает.

Глупости. Вы пишите, что попало и получаете какие попало ошибки.
Код
typedef struct {
int dm[8][8];
} dm_t;

dm_t  mm;

int test( dm_t *dm_ptr )
{
   return( dm_ptr->dm[3][3] );
}


void xmain(void)
{
     test( &mm );
}

И не рассказывайте о том, что компилятор чего-то не понял.


Цитата(Goodefine @ Jun 9 2009, 16:50) *
У меня подозрение, что достучаться как
Код
Program->program[x][y]

Вы сможете на плюсах. В обычном Си компиляторе это не проходит...

Ой! Рассажите об этом Ритчи....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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   Цитата(mempfis_ @ Jun 9 2009, 16:46) да и...   Jun 9 2009, 13:50
|- - mempfis_   КодВы сможете на плюсах. В обычном Си компиляторе ...   Jun 9 2009, 13:58
- - Goodefine   Цитата(zltigo @ Jun 9 2009, 17:23) Глупос...   Jun 9 2009, 14:34
|- - zltigo   Цитата(Goodefine @ Jun 9 2009, 17:34) и Р...   Jun 9 2009, 14:39
|- - demiurg_spb   Вопрошающему: посторайтесь понять это и Вы найдёте...   Jun 9 2009, 15:59
|- - defunct   Цитата(demiurg_spb @ Jun 9 2009, 18:59) t...   Jun 9 2009, 18:32
|- - demiurg_spb   Цитата(defunct @ Jun 9 2009, 22:32) нам н...   Jun 9 2009, 19:31
|- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th August 2025 - 18:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01448 секунд с 7
ELECTRONIX ©2004-2016