c语言中的文件作用域、函数原型声明、定义声明和非定义声明
c语言中的文件作用域。
1、c语言中的文件作用域
#include <stdio.h>
#define NUMBER 5 ## 对象式宏
int v[NUMBER]; ## 在函数外声明的变量,文件作用域,定义声明
int func1(void); ## 因为func1函数是在main函数之后创建的,因此需要函数原型声明
int main(void)
{
extern int v[]; ## 非定义声明,可省略
int i;
puts("please input the scores.");
for (i = 0; i < NUMBER; i++)
{
printf("v[%d] = ", i); scanf("%d", &v[i]);
}
printf("the max : %d\n", func1());
return 0;
}
int func1(void)
{
extern int v[]; ## 非定义声明,可省略
int i, max = v[0];
for (i = 0; i < NUMBER; i++)
{
if (v[i] > max)
max = v[i];
}
return max;
}
在程序的程序块中声明的变量的作用域是块作用域。 而像数组v这样,是在函数外声明的,其名称从声明的地方开始,到该程序的结尾都是通用的,这样的作用域称为文件作用域。
编译器在读取数据时,是按照从头到尾的顺序读取的,因为func1函数定义在main函数之后,所有要想在main函数中调用top函数,需要提前声明funca1函数,像这样明确描述了函数的返回类型,以及形参的类型和个数等的声明称为
函数原型声明。如果把函数func1放在main函数之前,就不需要函数原型声明了。
func1原型声明:非定义声明
func1函数:定义声明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律