#include <stdio.h> #include <math.h> float pri0() { extern int x, y, f; /*описание внешних переменных x, y, f*/ extern int a, b; /*описание внешних переменных a, b, являющихся статическими*/ puts("введите значение b"); scanf("%d", &b); printf("программа pri0: a=%d; b=%d; x=%d; y=%d. \n\n", a, b, x, y ); /*вывод значений внешних переменных, а, х и у получили значения вне этого файла, b получила значение в этом файле*/ if(a>b) f=x*y; else f=x%y; /*вычисления f для примера*/ return(f); } void pri1(void) /*функция pri1()*/ { printf("\nпрограмма pri1: a+b=%d.\n", &b+3); /*выводится значение a+b для примера*/ }
int x, y, c, f; /*объявление внешних переменных*/ static int a=3, b; /*объявление внешних статических переменных a, b целого типа, инициализация переменной а*/ main(){ void pri1(void); /*объявление функции не возвращающей значение*/ puts("введите значения x, y"); scanf("%d%d", &x, &y); /*ввод значений внешних переменных*/ puts("введите значение b"); scanf("%d", &b);
printf("\tf=%d\n", f); /*вывод на экран значения переменной f, вычисленного в функции pri0()*/ pri1(); /*обращение к функции pri1()*/ pri0(); /*обращение к функции pri0()*/ }
При компиляции функции получется вот такой бред:
[Ссылки могут видеть только зарегистрированные пользователи. ]
И ругается на эту строку:
Цитата:
printf("\nпрограмма pri1: a+b=%d.\n", &b+3); /*выводится значение a+b для примера*/
Где проблема понять не могу =/
________________
Дух из прошлого...
Последний раз редактировалось userinit.exe; 07.12.2012 в 15:44.
extern int x, y, f; /*описание внешних переменных x, y, f*/
extern int a, b; /*описание внешних переменных a, b, являющихся статическими*/
Вот это должно быть вне метода...
extern int x, y, f; /*описание внешних переменных x, y, f*/
extern int a, b; /*описание внешних переменных a, b, являющихся статическими*/
внешние переменные в внутренней функции?
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.