Статья

Статья Применение указателей в C

Работа добавлена на сайт bukvasha.net: 2015-10-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.2.2025



Применение указателей в C++

Напишем следующую программу, которая использует указатели. Предположим, что значение iNum1 равно 2, а адрес iNum1 — 1000. INum1 будет занимать байты с адресами 1000, 1001, 1002 и 1003. Если значение iNum2 было равно, то переменная iNum2 могла бы занимать ячейки с адресами 1004, 1005, 1006 и 1007. Следовательно, iNumI начинается с адреса 1000, а iNum2 начинается с адреса 1004. Однако, хотя iNumI занимает четыре адреса, в С/С++ адресом iNumI называется адрес 1000, а адресом iNum2 называется адрес 1004. Теперь объявим две переменные как указатели — pNum1 и pNum2. Ваша цель состоит в том, чтобы сохранить число 1000 (адрес iNumI) в pNum1 и число 1004 (адрес iNum2) в pNum2.

Внесите следующие изменения в main(void):

void main(void)

{

int iNum1;

int iNum2;

int iResult;

int* pNum1;

int* pNum2;

iNum1 = 2;

iNum2 = 3;

pNum1 = &iNum1;

pNum2 = &iNum2;

iResult = *pNum1 + *pNum2;

cout << "The result is: ";

cout << iResult << endl;

}

Код, который вы ввели, объявляет три целых переменных:

int iNum1;

int iNum2 ;

int iResult;

Затем объявляются еще две переменные:

int* pNum1;

int* pNum2;

Обратите внимание, что в объявлении использована запись int*. К какому же типу относится переменная pNum1? Можете ли вы сохранить целое значение в pNum1? Нет. В pNum1 вы можете сохранить адрес переменной типа int. Вы должны сохранить в переменной pNum1 число 1000, поскольку 1000 является адресом iNum1. Точно так же вы должны сохранять адрес целого значения и в переменной pNum2. После этого вы присваиваете значения переменным iNum1 и iNum2:

iNum1 = 2;

iNum2 = 2;

Затем вы присваиваете значения переменным pNumI и pNum2:

pNum1 = &iNum1;

pNum2 = &iNum2;

Эти два оператора сохраняют адрес переменной iNum1 в pNum1 и адрес iNum2 в pNum2. Далее вам нужно вычислить результат сложения iNum1 с iNum2. Вы могли бы бы просто написать оператор

iResult = iNum1 + iNum2;

Однако попробуем выполнить вычисления, применив указатели, а не переменные. Например, чтобы вычислить результат сложения iNuml и iNum2, вы пишете следующий оператор:

iResult = *pNum1 + *pNum2;

Когда вы используете указатель с предшествующим символом *, вы извлекаете значение, хранящееся по данному адресу. *pNum1 — это то же, что и *1000, так что программа обращается к значению, хранящемуся по адресу 1000. Поскольку переменная pNum1 была объявлена как int* (а компилятор знает, что целое значение занимает четыре байта памяти), программа обращается к адресам 1000, 1001, 1002 и 1003. Она находит по этим адресам значение 2, так как *pNum1 равно 2. Аналогично, *pNum2 равно 3, поскольку pNum2 равно 1004, а ячейки памяти 1004, 1005, 1006 и 1007 содержат целое со значением. И, наконец, выполняется оператор cout, который выводит на экран значение переменной iResult:

cout << "The result is: " << endl;

cout << iResult;

Сохраните свою работу, выполните компиляцию и компоновку программы. Запустите программу и убедитесь, что значение iResult равно 5 (2+3=5).

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.realcoding.net



1. Реферат Стресс сельскохозяйственных животных
2. Реферат Конспект лекций по философии
3. Краткое содержание Тихий американец Грэм Грин
4. Реферат Трансиордания
5. Реферат на тему Virtual Reality Essay Research Paper What is
6. Реферат на тему Aids In America Essay Research Paper For
7. Реферат Топливно- энергетический комплекс, нефть в Республике Беларусь
8. Реферат Патентный поиск на тему Современная оснастка станка по курсу Основы научной деятельности
9. Сочинение на тему Афанасий фет - благоухающая свежесть чувств в поэзии афанасия фета
10. Реферат на тему Мировой суд во второй половине 19 века