C语言之程序结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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语言之数据结构

20)浅谈C语言之结构体与strcpy()

浅谈PHP数据结构之栈

浅谈C语言指针,结构体

浅谈C语言中结构体的初始化

C语言试题189之编写一个程序,按照下图中的样子创建数据结构,最后三个对象都是动态分配的结构。第一个对象则可能是一个静态的指向结构的指针