C语言之程序结构
一个好的程序首先要有好的程序结构,我从变量和结构两个方面来做分析。
一、浅谈程序中的变量
一个程序架构最基本的就是程序变量,谈到程序中的变量,我们应该考虑两部分,一方面是变量的作用域,一方面是变量的生存期。
我们就从这两个角度对变量进行分析:
(1)全局变量
全局变量的声明要放在主函数之前,它的作用域是整个程序全局,生存期是程序整个周期。
(2)局部变量
局部变量是在某个局部声明的变量,它的作用域为特定区域,例如函数体内声明的变量作用域在函数体内,
函数体执行完成则完成。如果变量声明在一个for语句里面,则他作用的区域也就是这个for语句。同样生命
周期也之在特定区域。
(3)静态局部变量
static 静态局部变量所声明的变量作用域是某个特定函数体,但是其生命周期是整个程序的生命周期。
注意:
函数体不能传递回本地变量的地址,具有危险性,因为函数体执行完成后,则局部变量的内存区被释放。
举个例子来看
#include <stdio.h>
int value = 0;//全局变量
void fun(); void fun1();
int main()
{
int i=0; //全局变量
printf("main:%d\n",i);//此处使用的i应该是处于main级别下的i值。
fun();
printf("main:%d\n",i);//此处打印的依然是main下的i
fun();
fun1();
printf("main:%d\n",i);//此处打印的依然是main下的i
fun1();
printf("main:%d\n",i);//此处打印的依然是main下的i
} void fun()
{
int i = 10;//此处的i值只作用于这个函数体而且每次进入函数就定义一次,离开函数就释放空间
printf("fun:%d\n",i);//此处打印的是这个局部变量每次都是1
} void fun1()
{
static int i = 10;//静态局部变量,其只声明一次,而一直存活
printf("fun1:%d\n",i);
i++;
}
二、程序结构分析
大的程序一般都要进行模块化编程
每个模块都对应着头文件和源文件
源文件的内容是程序的主题部分,函数的内容
头文件的内容是程序的解释说明,包括全局变量的声明和所有对外公开函数的声明
(1)头文件
1、头文件包含问题
#include "" 与 #include < >
""是先在当前目录下寻找此文件,如果没有再去系统设定的目录下寻找,一般自己写的文件就用""
<>是直接去系统设定的目录下寻找文件,一般都是系统提供的文件用<>
要注意防重复包含
所以需要在每个头文件作如下编写
(标准头文件结构)
#ifndef _MAX_H_
#define _MAX_H_
//程序区
#endif
2、头文件中的变量要想被外部调用应该用extern
extern int i;
注意:声明与定义的区别
定义一个变量,定义一个函数是在程序中要产生代码的。
而声明在程序中是不生成代码的,因为声明只是告诉编译器我有这个东西,让编译器记住。
例如在主函数之前我们都要有函数的声明,而函数体则在主函数之后定义。
(2)源文件
包含函数的解释(源代码)
C语言之程序结构的更多相关文章
- [C语言]进阶|程序结构
------------------------------------------------------------------------------------ 全局变量: // main.c ...
- Go语言(1)——程序结构
程序结构 基础部分仅仅列举和其他语言不一样的地方(C语言为例). 声明 Go语言有四个主要声明:var.const.type.func,类似于C语言中的变量,常量,结构体和函数. package ma ...
- 【Go语言系列】2.3、Go语言基本程序结构:变量及常量
1.什么变量 变量来源于数学,从根本上说,变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间. 1.1变量声明 Go 语言变 ...
- 【Go语言系列】2.2、Go语言基本程序结构:关键字与标识符
什么是标识符 标识符用来命名变量.类型等程序实体.标识符是指Go语言对各种变量.方法.函数等命名时使用的字符序列,标识符由若干个字母.下划线_.和数字组成,且第一个字符必须是字母.通俗的讲就是凡可以自 ...
- 【Go语言系列】2.1、Go语言基本程序结构:注释
注释在程序中的作用是对程序进行注解和说明,便于对源码的阅读.在源码中适当地添加注释,能够提高源码的可读性. Go语言的注释主要分成两类,分别是单行注释和多行注释. 单行注释: //单行注释 多行注释: ...
- [Objective-C语言教程]程序结构(3)
1. Objective-C Hello World示例 Objective-C程序基本上由以下部分组成 - 预处理程序命令 接口 实现 方法 变量 声明和表达 注释 下面来看一下打印“Hello W ...
- 【C语言入门教程】1.1 基本程序结构
基本程序结构就是从上至下顺序执行的程序,C语言程序必须有且只有一个主函数,程序从主函数开始执行,直到主函数结束.下例是根据半径求圆形面积的程序源代码. #include <stdio.h> ...
- 网易云课堂_C语言程序设计进阶_第6周:程序结构
6.1 全局变量 6.2 编译预处理 6.3 大程序结构 6.1 全局变量 全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数都无关 在任何函数内部都可以使用它 ...
- C语言函数与程序结构
title : C语言函数与程序结构 tags : C语言作用域规则 , 外部变量 ,静态变量 ,寄存器变量,宏定义 grammar_cjkRuby: true --- 外部变量 变量声明用于说明变量 ...
随机推荐
- 利用dom4j读取xml文件
对于xml文件的读取,其实有很多方法,例如:SAX实现方法,DOM4J实现方法 ,DOM 实现方法,JDOM实现方法 等等. 下面,我就说下dom4j的读取方法: 1.首先,肯定要引入第三方jar包. ...
- 一个不喜欢读书的Javaer的读书单
很可惜,从我一开始学技术开始,我就不喜欢看书,严重的时候翻不到两页就会开始狂打瞌睡.很幸运,有互联网能够为我提供很多知识,甚至一些知识从网上看来的会更加权威一些.但是,我的经验告诉我,无论是从功利性的 ...
- 浅谈C语言中的联合体
联合体union 当多个数据须要共享内存或者多个数据每次仅仅取其一时.能够利用联合体(union).在C Programming Language 一书中对于联合体是这么描写叙述的: 1)联合体是一个 ...
- 标准I/O库之标准输入、标准输出和标准出错
对一个进程预定义了三个流,并且这三个流可以自动地被进程使用,它们是:标准输入.标准输出和标注出错.这些流引用的文件与文件描述符STDIN_FILENO.STDOUT_FILENO和STDERR_FIL ...
- QT运行时加载UI文件
写QT程序里运行时加载UI文件,代码如下: 点击(此处)折叠或打开 #include "keyboard.h" #include <QtUiTools> #incl ...
- Linux 释放cached内存
使用free -m 查看系统使用的内存情况: # free -m total used free shared buffers ...
- 一句话、一张图记住Activity和Fragment之间错综复杂的生命周期关系
如果我们在Fragment和它的宿主Activity的生命周期中都加上Log日志,你能顺利写出他们的执行顺序吗?我们先来看一张Google官方的图片: 咋一听,Activity生命周期有七个方法,Fr ...
- oracle学习----逻辑读
1.物理读 当数据块第一次读取到,就会缓存到buffer cache 中,而第二次读取和修改该数据块时就在内存buffer cache 清空数据缓冲区 SQL> alter session se ...
- JS调用ashx文件传递中文参数取不到值的解决方案
引自:http://www.cnblogs.com/yinpeng186/archive/2011/09/30/2196726.html
- ACM——2的n次方
2的N次方 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交:1715 测试通过:838 描述 编程精确计算2 ...