![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ressac |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: нет Всего: 1 |
вот два примера, в первом выдаёт варнинги
а во втором нет. в первом заначит я передаю адресс указателя в функцию и принимаю его как УКАЗАТЕЛЬ и там начинаю с ним работать 1
а во втором я передаю тоже адресс на указатель но принимаю его как указатель на укразатель... 2
вообщем хелп :( |
||||||
|
|||||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Если ты передаешь адрес указателя, значит ты передаешь указатель на указатель, следовательно требуется тип int**
Это сообщение отредактировал(а) Xenon - 2.5.2007, 21:47 |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 7 Всего: 18 |
Вообще конечно трудно уловить логику проги, но все же
-------------------- Подпись больше не нужна |
|||
|
||||
| ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: нет Всего: 1 |
Greeen, да нет там логики , просто изварашаюсь с указателями чтоб понять как они пашут, а это что ты запустил у меня компилится но прога вылетает с критической ошибкой...
|
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 7 Всего: 18 |
ressac, а вылетает потому что объявили указатель, память под него не выделили а уже используем. А что тебе непонятно, ты лучше спрашивай.
Добавлено через 1 минуту и 42 секунды
Вот так не вылетит. -------------------- Подпись больше не нужна |
|||
|
||||
| ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: нет Всего: 1 |
не понятно то что почему должен ставить как УКАЗАТЕЛЬ НА УКАЗАТЕЛЬ во втором варианте ... чтоб не выходили варнинги
|
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 7 Всего: 18 |
Потому что:
1. У тебя p - указатель, а в функцию ты передаешь его адрес. 2. malloc возвращает указатель, а если у тебя int* p - то ты его разыменовываешь, и адрес записывается просто в p Добавлено через 2 минуты и 49 секунд Надеюсь не слишком непонятно объяснил -------------------- Подпись больше не нужна |
|||
|
||||
| ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: нет Всего: 1 |
Greeen, первый пунк понял
что значит "разыменовываешь" ? malloc возвращает адресс на ячейку памяти скажем так, вот этот адресс я и сохраняю в "p" локальную тойсть подставляю *p=malloc.... вообщем если можно поподробней |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Разыменовать - снять косвенность - получить, грубо говоря, доступ к переменной, на которую указывает указатель.
|
|||
|
||||
| ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: нет Всего: 1 |
Xenon, серовно не понял,
дайте мне люди наверно хороший мануалчик по указателям для СИ а то толком ничего так и не пойму, или объясните ещё подробней почему надо указывать как указатель на указатил я лично понимаю это так .. надо указывать указатель на указатель потому что предаю Сам указатель , если бы передавал адрес переменой то поставил просто указатель. но я не понимаю нафига указывать как указатель на указатель может у кого-то в запасе есть хороший пример где показано как работают указатели с функциями? я надеюсь вы меня поняли |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Ну так если
То есть цепока получились [var] <- pTr <- pTr2 А читай вообще, Шилдта или Страуструпа. Это же азы. Это сообщение отредактировал(а) Xenon - 3.5.2007, 00:20 |
|||
|
||||
| ressac |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: нет Всего: 1 |
Xenon, это я знаю, читал уже и видел и главное конечно что понимаю это
..но серовно спасибо. я просто не могу понять логику зачем делать указать на указатель когда просто можно сделать указатель на АДРЕС и всё, и почему компилятор ругается.. я не вижу смысл.. ведь если так подумать он то ведь компилит в конечном итоге всё это и всё правильно работает, значит ход мысли правильный... но вот компилятор почему - то говорит что это не правильно.. тоже самое у меня было когда я пытался переслать матрицу как указатель вот пример
кстати на каком-то форуме читал что Шилда не рекомендуют почему-то, про Страуструпа первый раз от тебя слышу... а что для начала не подойдёт
|
||||
|
|||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
ressac, исходя из твой логики int*, double* - одно и тоже - это указатели "на АДРЕС и все". Но типы-то разные? И там тоже разные.
|
|||
|
||||
| Lamak |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 8.5.2005 Где: Украина,Одесса Репутация: нет Всего: 7 |
ИМХО: это не одно и тоже! Они оба указывают на одну и ту же ячейку памяти(первый элемент массива) это да , но типы у них разные: &matrix[0][0] это указатель на int - то чего ждёт твоя функция matrix идентификатор типа массив - то чего не ждёт твоя функция Вот цитата из Страуструпа
--------------------
Роботы - это интересно и увлекательно! |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
поаккуратнее, а то новый холивар развяжешь |
|||
|
||||
| Lamak |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 8.5.2005 Где: Украина,Одесса Репутация: нет Всего: 7 |
ressac, по поводу твоего первого поста:
в варианте 1, в функции test
мне кажется строку *p=malloc(sizeof(int)); надо заменить на p=malloc(sizeof(int)); т.к. насколько я помню то malloc возвращает адрес на ячейку памяти => его надо сохранять в переменной типа указатель на int (у нас p) а не в просто int (у нас *p) --------------------
Роботы - это интересно и увлекательно! |
||||
|
|||||
| Lamak |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 8.5.2005 Где: Украина,Одесса Репутация: нет Всего: 7 |
чё то я не вкурил : я что-то непрвильно сказал? --------------------
Роботы - это интересно и увлекательно! |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
тут есть люди которые сочтут это неккоректным и повторится соседний топик.. |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Lamak, сказал ты всё правильно. Но и тех людей, о которых говорит vinter, пока что никто не отменял. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Lamak |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 8.5.2005 Где: Украина,Одесса Репутация: нет Всего: 7 |
Страуструп
ЗЫ:извиняйте за очередной оффтоп, просто не смог удержаться --------------------
Роботы - это интересно и увлекательно! |
||||
|
|||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |