Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица Пифагора с указателями 
:(
    Опции темы
mister2010
Дата 25.5.2010, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



НЕ могу понять динамические масивы. Объясните как этот код работает.
Вот пишу пример с книги.
Код

 
// таблица Пифагора
#include <stdio.h>
#include <conio.h>
 
int main() {
   int i, j;
// 1. создание
   int **m = new int *[10]; //Это объявление указателя с 2-ной звёздочкой это как ?
                                   //И вот это ниже объясните  
   for(i = 0; i < 10; i++)  
      m[i] = new int [10];
// 2. инициализация
   for(i = 0; i < 10; i++)
      for(j = 0; j < 10; j++)
         m[i][j] = (i + 1)*(j + 1);
// 3. вывод
   for(i = 0; i < 10; i++) {
      for(j = 0; j < 10; j++)
         printf("%2d ", m[i][j]);
      printf("\n");
   }
// 4. удаление
   for(i = 0; i < 10; i++)
     delete [] m[i];
   delete [] m;
 
   getch();
   return 0;
}






nt **m = new int **[10]; //Это объявление указателя на трёхмерный масив?

int **m = new int *[10];//Почему здесь одна квадратная скобка? 
Объясните понятней эту строку. Это объявление указателя m на 10 масивов что ли?
Теперь это:
Код

m[i] = new int [10]; //Это уже создание самого масива, на который указывал указатель **m?



 

PM MAIL   Вверх
toxx
Дата 25.5.2010, 19:59 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



что такое **m:
Код

int **m// указатель на массив указателей на одномерные массивы столбцов\строк.

Выделение памяти под массив указателей из 10 элементов:
Цитата

int **m = new int *[10];//Почему здесь одна квадратная скобка? 

Это выделение памяти под строки\столбцы:
Цитата

m[i] = new int [10]; //Это уже создание самого масива, на который указывал указатель **m?

PM MAIL   Вверх
mister2010
Дата 25.5.2010, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Почему 2 раза встречается слово new?
PM MAIL   Вверх
toxx
Дата 25.5.2010, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



mister2010
потомучто ты выделяешь память сначала под массив указателей, потом под строки массива на которые указывают эти указатели.
PM MAIL   Вверх
mister2010
Дата 26.5.2010, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет




Из-за чего я могу создать 2-мерный массив в тех 3-ёх строках кода?
из-за чего я могу вложенный массив сделать выделив для нег опямять, то есть вот это:

Код

 for(i = 0; i < 10; i++)
      m[i] = new int [10];

PM MAIL   Вверх
djamshud
Дата 26.5.2010, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Код разжевывать лень, читайте книгу. Если книга не объясняет собственных примеров, смените ее. Классика - K&R. Если все равно не понимаете, то как ни печально, лучше будет сменить сферу деятельности.

Добавлю, что указатель на указатель в качестве двумерного массива - далеко не всегда хорошее решение. Часто логически разбивают один буфер, чтобы он был "как N-мерный" (что собственно делают и компиляторы для статических N-мерных массивов).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mister2010
Дата 26.5.2010, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Из-за того, что создан не простой массив чисел, а из-за того что создан массив указателей?
Из-за того что каждый элемент массива - это указатель, именно поэтому я имею права, создать вложенный массив, посредством обращения по индексу массива? То есть например так m[5]=36;
PM MAIL   Вверх
toxx
Дата 26.5.2010, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Цитата

Из-за того, что создан не простой массив чисел, а из-за того что создан массив указателей?
Из-за того что каждый элемент массива - это указатель, именно поэтому я имею права, создать вложенный массив, посредством обращения по индексу массива? То есть например так m[5]=36; 

отвечаешь на свои вопросы?
PM MAIL   Вверх
mister2010
Дата 26.5.2010, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Я написал как я считаю, правильно ли я ответил на свой вопрос?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0719 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.