c语言函数初级调用问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 07:43:53
请看看下面这个函数:

#include<stdio.h>
#define LENGTH 10
#define WIDTH 5
#define SUMLW (LENGTH+WIDTH)
int area; /*用于保存面积*/
int perimeter; /*用于保存周长*/
void main()
{
void fun();
fun();
printf("长方形长为%d,宽为%d, 周长为%d\n", LENGTH, WIDTH, perimeter);
printf("长方形长为%d,宽为%d, 面积为%d\n", LENGTH, WIDTH, area);
}

void fun()
{
int area, perimeter;
area = LENGTH * WIDTH;
perimeter = 2*SUMLW;
}

运行没有错误以及警告

为什么函数无法调用到void fun()?已经在前面写上声明和调用语句了呀?!
变成局部变量那它只能在void fun里起作用,在void main里是无效的?

void fun()
{
int area, perimeter; // 问题出在这里,删掉就好了
area = LENGTH * WIDTH;
perimeter = 2*SUMLW;
}

因为area和perimeter已经被声明成全局变量了,在fun中重新声明的话,被赋值的只是这两个局部变量,而不是全局变量。

把函数fun()的声明放在main函数前面.或者干脆把函数体放在main前面.因为这个函数对main是未声明的.