|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Передачи значений указателейУказатель, как и любая другая переменная, может быть передан функции в качестве аргумента. // PointerVal2 - программа демонстрирующая // вариант передачи значений указателей #include <windows.h> #include <stdlib.h> #include <string.h> #include <tchar.h> #include <iostream> #include <stdio.h> using namespace std; void fn(int* pintArg) { // здесь значение intArg определено значением аргумента cout << "при обращении к функции fn(pintArg) значение аргумента pintArg = " << pintArg << "\n"; *pintArg = 10; cout << "в функции fn(pintArg) значение аргумента intArg = " << pintArg << "\n"; } void parent(void) { int n1=0; cout << "при обращении к функции parent() значение n1 = " << n1 << "\n"; fn(&n1); // так передаётся адрес n1 теперь n1 равно cout << "после обращения к fn(n1) в функции parent() значение n1 = " << n1 << "\n\n"; } void main() { SetConsoleCP(1251); // руссификация ввода SetConsoleOutputCP(1251); // и вывода int A = 10; int* pA = &A; cout << "значение аргумента A = " << A << "\n"; cout << "значение указателя рA = " << pA << "\n"; cout << "значение по адресу, определяемому указателем рA = " << *pA << "\n"; fn(pA); cout << "обращении к функции parent() значение аргумента pintArg = " << *pA << "\n"; parent(); }
В этом случае вместо значения А функции fn() передаётся адрес этой переменной, записанный в указатель рА. Отличие передачи значения переменной от передачи значения указателя на переменную становится понятным при рассмотрении присвоения, выполняющегося в функции fn(). В функцию fn() передаётся адрес переменной-аргумента pintArg, а затем по этому адресу записывается значение 10. В функции parent(void) переменной n1 присваивается значение 0, а затем переменной n1, заменяя 0, по адресу присваивается значение 10. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |