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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2011, 19:49   #1
Furchtlos
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 20
По умолчанию CPP Указатель на статический двумерный массив

Читал на разных формах, так ничего и не понял. Почему не работает такое присваивание:
int **px;
int x[5][2];
px=x;
x[][] - это указатель на массив указателей, или это только в случае с динамическим массивом?
Ведь по сути, когда мы индексируем массив, мы индексируем и разыменовываем указатели?
И как вообще объявить тогда указатель на двумерный массив? Нужно присвоить:
px=(int **) x? Или неправильно?
Furchtlos вне форума Ответить с цитированием
Старый 09.12.2011, 20:08   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

ты смешал статические и динамические массивы.
статический:
Код:
int foo(int A[][2]);

int main()
{
    int A[5][2];
    ....
    foo(A);
    ...
}
динамический:

Код:
int foo(int **A);

int main()
{
    int **A = new float *[5];
    for (int i = 0; i < 5; i++)
        A[i] = new int[2];
    ...
    foo(A);
    ...
    for(int i = 0; i < 5; i++)
        delete[] A[i];
    delete[] A;
}
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 09.12.2011, 20:17   #3
Furchtlos
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 20
По умолчанию

Ну так а как просто указатель объявить на двумерный статический массив? Без передачи в функцию. И почему нужно указывать второй размер?
Furchtlos вне форума Ответить с цитированием
Старый 09.12.2011, 20:26   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

статический массив int[x][y] по сути говоря есть int[x*y] просто при использовании вычисляется индекс нужный.
потому статический и динамические двух(и более)-мерные массивы отличаются.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.12.2011, 20:29   #5
Furchtlos
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 20
По умолчанию

Ну хорошо, а в двухмерном виде можно объявить на него указатель? Или только создавать новый одномерный массив, и запихивать в него значения со статического двухмерного, и потом на него указатель?
Furchtlos вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
статический массив стеков 19denis90 C++ Builder 1 04.07.2011 13:00
статический двумерный массив Koksa Помощь студентам 1 10.02.2011 07:58
статический массив IrinaSS Общие вопросы C/C++ 2 08.12.2010 19:31
Одномерный статический массив С++ Natali21 Помощь студентам 1 17.11.2010 16:57
указатель на двумерный массив Aндрей Общие вопросы C/C++ 9 20.05.2010 09:40