АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Передачи значений указателей

Читайте также:
  1. II: Расчет клиноременной передачи
  2. III: Расчет червячной передачи
  3. V Расчет червячной передачи.
  4. Анализ типов значений слова
  5. Архивирование (регистрация) значений переменной
  6. В отличие от значений многозначного слова, которые помещаются в толковых словарях в одной словарной статье, омонимы, будучи разными словами, выделяются в разные словарные статьи.
  7. Взаимосвязь массивов и указателей
  8. Волновые зубчатые передачи
  9. Волновые зубчатые передачи (ВЗП)
  10. Волновые зубчатые передачи.
  11. Волны в линиях передачи
  12. Выбор материала зубчатой передачи и определение допускаемых напряжений

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

// 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.


1 | 2 | 3 | 4 | 5 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)