Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C] Указатели

271
27 июня 2007 года
MrXaK
721 / / 31.12.2002
 
Код:
int a[3][3] = { 3,0,-3,4,-4,1,5,2,-5};
int *pa[3] = { a[0], a[1], a[2] };

то есть как я понимаю a == pa == матрица3x3
3 0 -3
4 -4 1
5 2 -5

 
Код:
for(int i = 2; i >= 0; i--)
 cout<<...

если вместо троеточия (*(*pa)+i) или (*(*(pa+i))) или (**pa+i), то возвращается первый столбец в обратном порядке...
а если (*(*(pa)+i)) или (*(*pa+i))), то первая строка -3 0 3
или я не понимаю указатели, или ..., но почему (*(*(pa+i))) возвращает первый столбец???
361
27 июня 2007 года
Odissey_
661 / / 19.09.2006
(*(*pa)+i) - разыменовываем указатель на первый элемент, прибавляем значения i, получаем 3 + i = {5,4,3}
далее
(*(*(pa+i))) - смещаем указатель на i порядок и разименовываем, получаем первый столбец в обратном порядке {5,4,3}
далее
(**pa+i) - аналогично первому.
далее
(*(*(pa)+i)) - получаем указатель на первый столбец и пошагово его смещаем на i,попутно разыменовывая ,получаем {-3,0,3}
1.9K
28 июня 2007 года
[*]Frosty
278 / / 17.06.2006
Разберем (**pa+i), и (*(*pa)+i) подробнее.
Посмотрим.
 
Код:
pa
  |
  \/
  pa[0]          pa[1]           pa[3]        массив указателей на строки)
  |               |                |
  \/              \/               \/
  a[0][0] ...   a[1][0] ...    a[2][0] ...


*pa - из указателя на массив указателей получаем массив указателей
*pa - массив указатедей неявно преобразуеться к указателю на перый элемент(первый элемент - указатель на первую строку
 
Код:
int *pa[3] = { a[0], a[1], a[2] };

, а точнее так как все элементы расположены последовательно, то на весь массив а
 
Код:
int a[3][3] = { 3,0,-3,4,-4,1,5,2,-5};
)
*(*pa) - разименовываем указатель на первый элемент первой строки - получаем первый элемент

Таким образом выше приведенный пример с (**pa+i) или (*(*pa)+i) даст 5, 4, 3.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог