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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2008, 22:18   #1
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию Указатели

В учебнике есть пример с указателями. Помогите пожалуйста разобраться как работают указатели. Я попробую объеснить вам ,как я, понимаю работу указателей.
Вот пример из учебника :

Код:
#include <iostream.h> 
void change_values (int *a, int *b) 

{ 
    *a = 1001; 
   *b = 1001; 
   cout << "Значения в функции display_values" << " равны " << *а << " и " << *b << endl; 
} 

void main(void) 

{ 
    int big = 2002, small = 0; 
   cout << "Значения перед функцией " << big << " и " << small << endl; 
   change_values(&big, &small); 
   cout << "Значения после функции " << big << " и " << small << endl; 
}
change_values(&big, &small); Это, передача адресов ячеек памяти параметров, в функцию.

void change_values (int *a, int *b) Эти указатели на тип int, будут хранить адрес параметров, &big , &small.

*a = 1001;
*b = 1001; Это, параметры-указатели которые указывают или ссылаются на определенный участок памяти и их я буду менять на переданые с помощью адреса параметры &big , &small.


Если что-то не так, поправьте меня, или добавьте может я что-то упустил.
JOFRIF вне форума Ответить с цитированием
Старый 31.08.2008, 14:47   #2
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

Цитата:
Сообщение от JOFRIF Посмотреть сообщение
*a = 1001;
*b = 1001; Это, параметры-указатели которые указывают или ссылаются на определенный участок памяти и их я буду менять на переданые с помощью адреса параметры &big , &small.
Наоборот, после вызова процедуры change_values, в переменных big и small будет храниться 1001. &small возвращает адрес переменной small, а *b позволяет работать с содержимым ячейки памяти, адресс которой хранится в переменной-указателе b. В данном случае, так как b указывает на адрес переменной small, после выполнения операции *b = 1001, в переменную small будет записано значение 1001.
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)

Последний раз редактировалось bag; 31.08.2008 в 15:00.
bag вне форума Ответить с цитированием
Старый 31.08.2008, 18:34   #3
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Вроде я понял.Указатель *a (в теле функции) указывает на адрес ячейки памяти &big и присваевает значение 1001 а указатель *b(тоже в теле функции) указывает на адрес &small и присваевает ей значение 1001. Я правильно понял ?

Цитата:
*b позволяет работать с содержимым ячейки памяти
адресс которой хранится в переменной-указателе b.
О каком *b сдесь идет речь ? об этом void change_values (int *a, int *b)
или об этом *b = 1001;
JOFRIF вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели Принц Общие вопросы C/C++ 2 08.06.2008 16:15
Указатели в Си Иллидан Общие вопросы C/C++ 7 20.02.2008 11:14
Указатели в функции. _LEON_ Общие вопросы C/C++ 4 04.02.2008 10:38
Указатели Си JET_FLASH Общие вопросы C/C++ 2 31.01.2008 23:02
Задачи на массивы и указатели в СИ D@rk_Spirit Общие вопросы C/C++ 3 29.12.2007 08:01