Указатели и адреса - C (СИ)
Формулировка задачи:
Всем привет
Подскажите, можно ли каким-то образом передать значение переменной i из одной функции в другую?
например:
#include <stdio.h> int func () { int i=5; int *pi=&i; printf("Значение i=%d", *pi); return 0; } int main () { &i=7; printf("А теперь значение i=%d", &i); return 0; }
Решение задачи: «Указатели и адреса»
textual
Листинг программы
#include <stdio.h> void func(int *pi) { (*pi)++; } void main() { int i; i=7; printf("Before i=%d",i); func(&i); printf("After i=%d",i); }
Объяснение кода листинга программы
В данном коде:
- Включается библиотека stdio.h, которая содержит функции для ввода-вывода данных.
- Определяется функция func(int *pi), которая принимает указатель на целое число.
- Внутри функции func происходит инкремент (*pi)++, то есть значение, на которое указывает указатель pi, увеличивается на 1.
- Определяется функция main().
- Внутри функции main() создается переменная типа int i со значением 7.
- Выводится сообщение
Before i=7
с помощью функции printf(). - Вызывается функция func(&i), где &i - это адрес переменной i.
- Выводится сообщение
After i=8
с помощью функции printf(). Код работает следующим образом: - При вызове функции func(&i) передается адрес переменной i по ссылке.
- Внутри функции func происходит инкремент (*pi)++, где pi - это указатель на переменную i.
- После выхода из функции func переменная i увеличивается на 1.
- После вызова функции func(&i) выводится сообщение
After i=8
, где i=8, так как значение переменной i увеличилось на 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д