Передача указателя по ссылке в чистом С - C (СИ)
Формулировка задачи:
Здравствуйте.
Есть следующий код, который успешно компилируется С++ компилятором, а вот на чистом С - уже нельзя.
Ну и вопрос: как этот код скомпилировать на С?
#include <stdio.h> void init(int** &q, int* &p) //так нельзя на С { q = &p; printf("Value of x via q in function init: %d\n\n", **q); /* вывод значения х, через q */ } void main() { int x = 100; int *p = &x; int **q = NULL; init(q, p); printf("Value of x via q in function Main: %d\n\n", **q); /* вывод значения х, через q */ system("pause"); }
Решение задачи: «Передача указателя по ссылке в чистом С»
textual
Листинг программы
#include <stdio.h> void init(int ** q, int * p) { *q = p; /* вывод значения х, через q */ printf("Value of x via q in function init: %d\n\n", **q); return; } void main() { int x = 100; int *p = &x; int *q = NULL; printf("Value of x via p in function Main: %d\n\n", *p); init(&q, p); /* вывод значения х, через q */ printf("Value of x via q in function Main: %d\n\n", *q); system("pause"); return; }
Объяснение кода листинга программы
- Объявление функции
init
с двумя аргументами типаint *
. - Внутри функции
init
присваивание аргументаq
значению аргументаp
. - Вывод значения переменной
x
через указательq
с помощью функцииprintf
. - Возвращение из функции
init
без значений. - Объявление функции
main
с типом возвратаvoid
. - Объявление переменной
x
типаint
со значением100
. - Объявление переменной
p
типаint*
и инициализация её значением адреса переменнойx
. - Объявление переменной
q
типаint*
и инициализация её значениемNULL
. - Вывод значения переменной
x
через указательp
с помощью функцииprintf
. - Вызов функции
init
с аргументами&q
иp
. - Вывод значения переменной
x
через указательq
с помощью функцииprintf
. - Вызов функции
system
с аргументомpause
. - Возвращение из функции
main
без значений. - Конец кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д