C语言,函数的声明与定义
函数声明与定义
变量:
在讲变量前,先讲一下变量的声明和定义这两个概念。
- 声明一个变量,意味着向编译器描述变量的类型,但不为变量分配存储空间。
- 定义一个变量,意味着在声明变量的同时还要为变量分配存储空间,在定义变量的同时为变量初始化。
局部变量:通常只定义不声明。
全局变量:通常在源文件中定义,在头文件中声明。
在一个函数内部定义的变量成为局部变量,它在本函数内有效。
函数中的局部变量,如果不定义类型,其缺省是自动变量auto,
例如:int a,b=2; 其等价于auto int a,b = 2;
静态局部变量:static
静态局部变量是指在函数内部定义与声明的局部变量,他仅供本函数使用,
静态局部变量在函数结束后不消失而保留其值,即存储单元不释放。
变量已有值,就是上次函数结束时的值。
静态局部变量是在静态存储区域分配存储单元,在程序的整个运行期间都不释放。
静态局部变量在编译时初始化赋值,切只赋值一次
全局变量:
在局部之外定义的变量成为全局变量
它可以被本文件的其他函数所公用,全局变量是静态存储方式,都是在编译时分配存储单元
静态外部变量static
静态外部变量只能在当前本文件中使用,所有静态外部变量要在源文件中声明与定义。
外部变量:extern
定义函数中的全局变量时,其缺省的格式就是外部变量类型,外部变量类型应该在源文件中定义,
在头文件中声明,它可以在多个文件中使用
函数:
内部函数:
内部函数的声明与定义多在当前源文件中,而外部函数的声明在头文件,定义在源文件。
使用内部函数的优点:
- 使函数的使用只仅限于当前文件。
- 避免与别文件中同名函数有冲突。
外部函数:
可在当前文件以外使用的函数叫做外部函数
C语言,函数的声明与定义的更多相关文章
- 你好,C++(24)好大一个箱子!5.1.1 函数的声明和定义
第5章 用函数封装程序功能 在完成功能强大的工资程序V1.0之后,我们信心倍增,开始向C++世界的更深远处探索. 现在,我们可以用各种数据类型定义变量来表达问题中所涉及的各种数据:用操作符连接这些变量 ...
- C++模板编程:如何使非通用的模板函数实现声明和定义分离
我们在编写C++类库时,为了隐藏实现,往往只能忍痛舍弃模版的强大特性.但如果我们只需要有限的几个类型的模版实现,并且不允许用户传入其他类型时,我们就可以将实例化的代码放在cpp文件中实现了.然而,当我 ...
- c++函数模板声明与定义相分离
最近在仿写stl,发现stl源码中将模板的声明与定义写在一起实在很不优雅.自己尝试用“传统”方法,及在.h文件里声明,在.cpp文件里定义,然后在main函数里包含.h头文件,这样会报链接错误.这是因 ...
- C语言函数的声明以及函数原型
C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错.但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明.所谓声明(Declaration),就是告诉编译器我 ...
- C语言中的声明与定义的差别
1.对于以下的声明语句 int a; 假设其位置出如今全部的函数体之外,那么它就被称为外部对象a的定义.这个语句说明了a是一个外部整型变量,同一时候为a分配了存储空间.由于外部对象a并没 ...
- C语言的函数声明,定义,调用以及exit退出
#include <stdio.h> #include <stdlib.h> void singing(); int main() { singing(); system(&q ...
- 【零基础学习iOS开发】【02-C语言】11-函数的声明和定义
在上一讲中,简单介绍了函数的定义和使用,只要你想完成一个新功能,首先想到的应该是定义一个新的函数来完成这个功能.这讲继续介绍函数的其他用法和注意事项. 一.函数的声明 1.在C语言中,函数的定义顺序是 ...
- C语言中声明和定义详解(待看。。
变量声明和变量定义 变量定义:用于为变量分配存储空间,还可为变量指定初始值.程序中,变量有且仅有一个定义. 变量声明:用于向程序表明变量的类型和名字. 定义也是声明,extern声明不是定义 定义也是 ...
- C/C++中的声明与定义
含义 声明(Declaration), 用于告诉编译器被声明的函数/变量的存在, 及它们的类型/调用格式信息, 以检查是否被正确调用. 声明不分配内存空间. 定义(Definition), 用于告诉编 ...
随机推荐
- 浅谈Web Api配合SignalR的跨域支持
最近接手的一个项目中,涉及到一个简单的消息模块,由于之前有简单了解过SignalR,所以打算尝试着摸索摸索~! 首先,通过Nuget管理器添加Microsoft ASP.NET SignalR引用~目 ...
- Day3_字符串操作与正则表达式
本节课的主要内容有:字符串的格式化.连接与分割.比较.匹配和替换.使用正则表达式 字符串的格式化: 去除空格:trim() 使用html格式化:nl2br() 替换‘\n’为‘<br /> ...
- oracle定时执行计划任务
show parameter job_queue_processes; alter system set job_queue_processes=10; 1,创建测试表 create table jo ...
- nyist 303序号互换(数学推理)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=303 思路: 开始看错题了,以为最多只有两个字母. 字母转数字的表达式很容易看出来是:(2 ...
- oracle 11g常用命令
1.监听启动监听lsnrctl start停止监听 lsnrctl stop 查看监听状态 lsnrctl status 2.启动用oracle用户进入su - oracle运行sqlplus命令,进 ...
- JavaScript引用类型之Array数组的拼接方法-concat()和截取方法-slice()
1.concat() 基于当前数组中的所有项创建一个新数组(也就是副本),然后将接收到的参数添加到副本的末尾,最后返回新构建的数组.也就是说,concat()在向数组中追加元素时,不会改变原有数组 ...
- Windows下命令行下启动ORACLE服务
检查监听器状态:C:\>lsnrctl statusLSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-6月 -20 ...
- JAVA 语 言 如 何 进 行 异 常 处 理 , 关 键 字 : throws,throw,try,catch,final
throws是获取异常throw是抛出异常try是将会发生异常的语句括起来,从而进行异常的处理,catch是如果有异常就会执行他里面的语句,而finally不论是否有异常都会进行执行的语句.
- poj2311
博弈论——sg,mex sg性质:1.在末态的状态点为N态. 2.P态的下一步有一个是N态 3.N态的下一步全部是P态. 当然这是对于单点一个游戏的情形,也相当于NIM只有一堆石子. mex(mini ...
- Hyper-v 安装CentOS
http://www.cnblogs.com/dunitian/p/4976077.html