C语言函数定义和函数声明
c语言函数的实现

c语言函数的实现摘要:1.C 语言函数的定义与声明2.C 语言函数的参数传递3.C 语言函数的返回值4.C 语言函数的调用5.C 语言函数的实现举例正文:C 语言函数的实现C 语言是一种广泛应用的编程语言,其主要特点之一是支持函数,即一段完成特定任务的代码。
函数可以提高代码的可读性、模块化程度和复用性。
本篇文章将介绍C 语言函数的实现。
一、C 语言函数的定义与声明在C 语言中,函数是通过定义和声明来实现的。
定义是指在函数体内编写实现代码,而声明是指在需要调用该函数的地方告诉编译器函数的原型。
函数定义的基本格式如下:```c返回类型函数名(参数类型参数名) {// 函数体return 返回值;}```例如,定义一个计算两个整数之和的函数:```cint add(int a, int b) {return a + b;}```二、C 语言函数的参数传递C 语言函数的参数传递分为两种:值传递和指针传递。
1.值传递:将实参的值复制给形参。
这种方式适用于基本数据类型。
2.指针传递:将实参的地址传递给形参。
这种方式适用于数组和结构体等复合数据类型。
三、C 语言函数的返回值函数可以返回一个值,这个值被称为返回值。
返回值可以通过return 语句来实现。
return 语句的格式为:```creturn 返回值;```如果函数不需要返回值,可以使用void 作为返回类型。
四、C 语言函数的调用在C 语言中,可以通过函数名并跟上括号内的参数列表来调用函数。
调用函数时,实参的类型和数量必须与形参匹配。
例如,调用上面定义的add 函数:```cint sum = add(3, 4);```五、C 语言函数的实现举例下面是一个C 语言函数实现的完整示例,该示例演示了如何定义、声明和使用一个计算两个整数之和的函数:```c#include <stdio.h>// 函数声明int add(int a, int b);int main() {int num1 = 5;int num2 = 10;int sum = add(num1, num2);printf("The sum of %d and %d is %d", num1, num2, sum);return 0;}// 函数定义int add(int a, int b) {return a + b;}```通过以上介绍,我们可以了解到C 语言函数的基本概念和实现方法。
c staitc 函数声明与定义

C静态函数声明与定义1.概述C语言中的函数声明和定义是程序中非常重要的部分,它们用于定义函数的功能和参数类型,以及在其他地方使用这些函数。
在C语言中,还有一种称为静态函数的声明和定义方式,它与普通函数有所不同。
本文将介绍C静态函数声明与定义的相关知识。
2.静态函数的声明在C语言中,函数的声明和定义都可以使用关键字static来修饰。
静态函数的声明可以在函数前面添加static关键字,用于告诉编译器该函数只能在当前文件中使用,其他文件无法访问该函数。
静态函数的声明格式如下所示:```cstatic 返回值类型函数名(参数列表);```其中,static是关键字,返回值类型用于定义函数返回值的类型,函数名是函数的标识符,参数列表包括函数的参数类型和参数名。
3.静态函数的定义静态函数的定义与普通函数的定义类似,只是在函数的返回值类型前添加了static关键字。
静态函数的定义格式如下所示:```cstatic 返回值类型函数名(参数列表){// 函数体}```在函数名前面添加了static关键字,用于表示该函数只能在当前文件中使用,其他文件无法访问该函数。
函数体内部包括了函数的具体实现代码。
4.静态函数的作用静态函数的主要作用是限制函数的作用域,使其只能在当前文件中使用。
这样可以避免函数被其他文件中的函数或代码误用,增强程序的安全性和可维护性。
另外,静态函数还可以避免函数名重复引起的命名冲突,提高了程序的可读性和可靠性。
5.静态函数与普通函数的区别静态函数与普通函数的区别主要在于作用域和信息性。
普通函数具有外部信息性,可以在其他文件中使用;而静态函数具有内部信息性,只能在当前文件中使用。
另外,静态函数与普通函数的区别还在于函数名重复引起的命名冲突,静态函数可以避免这个问题,提高了程序的可维护性。
6.静态函数的注意事项在使用静态函数时,需要注意以下几点:(1) 静态函数只能在当前文件中使用,不能在其他文件中使用;(2) 静态函数的声明和定义只能在同一个文件中,不能分开在不同的文件中;(3) 静态函数的作用域仅限于当前文件,不能被其他文件的函数或代码所访问。
C语言函数参考手册

C语言函数参考手册一、概述C语言是一种通用的、面向过程的程序设计语言,广泛应用于系统编程和应用软件开发等领域。
在C语言中,函数是非常重要的组成部分,通过函数可以实现代码的模块化和重复使用。
本手册旨在为C语言开发者提供函数相关信息的参考,包括常用函数的用法、参数说明和返回值等。
二、函数的声明函数声明是指在使用函数之前,需要先声明函数的存在及函数的参数类型和返回值类型。
函数声明通常位于源文件的开头部分,以便在其他代码中使用。
1. 函数声明的一般格式如下:返回值类型函数名(参数列表);2. 示例:int max(int a, int b);void printHello();三、函数的定义函数定义是指实现函数的功能代码,并且包含函数的参数和返回值类型的明确说明。
函数定义通常位于源文件的主体部分。
1. 函数定义的一般格式如下:返回值类型函数名(参数列表) {函数体代码return 返回值;}2. 示例:int max(int a, int b) {if (a > b) {return a;} else {return b;}}void printHello() {printf("Hello, world!\n");}四、函数的参数函数的参数是指在函数的括号内声明的变量,用于接受调用函数时传递的值。
函数的参数可以有多个,也可以没有参数。
1. 参数的声明格式如下:参数类型参数名2. 示例:int add(int a, int b);void printName(char* name);五、函数的返回值函数的返回值是指函数执行完成后返回的结果。
返回值可以是任何数据类型,如整数、浮点数、字符等。
函数的返回值可以有多种情况,根据具体逻辑来确定。
1. 返回值的声明格式如下:返回值类型2. 示例:int max(int a, int b);double calculateAverage(int array[], int length);六、常用函数C语言提供了许多常用的函数库,通过这些函数可以实现各种功能。
c语言函数的实验总结

c语言函数的实验总结C语言函数的实验总结一、实验目的C语言函数是C语言编程中的一个重要概念,能够帮助程序员实现代码模块化、提高代码复用性和可读性。
通过本次实验,旨在掌握C语言函数的基本用法和调用方式,提高编程能力和逻辑思维能力。
二、实验过程本次实验主要涉及以下几个方面的知识和技能:1. 函数的定义和声明2. 函数的参数传递方式3. 函数的返回值4. 函数的递归调用在实验开始前,我们首先了解了函数的定义和声明的概念。
函数的定义是指函数体的实现,包括函数的形参、返回值和函数体的具体实现;函数的声明是指对函数的提前声明,告诉编译器该函数的存在和返回值类型。
接下来,我们根据实验要求分别编写了一些示例函数来巩固相关的知识。
在函数的参数传递方式方面,我们编写了一些传值调用、指针调用和引用调用的示例函数,以便深入理解C语言中参数的传递方式为值传递。
在函数的返回值方面,我们编写了一些返回值为基本类型和引用类型的示例函数,以便理解C语言中函数返回值的作用和类型。
在函数的递归调用方面,我们编写了一些递归求阶乘、递归求斐波那契数列的示例函数,以便掌握递归调用的原理和实现方式。
在实验过程中,我们针对每一个示例函数进行了编码,并通过编译器进行了测试和调试。
在测试过程中,我们特别注意了函数的输入参数和输出结果,确保程序的正确性和可靠性。
同时,我们还使用了一些调试技巧,如打断点、输出调试信息来帮助我们查找代码中的错误和问题。
三、实验结果通过本次实验,我们成功实现了所有示例函数,并通过了编译器的测试和调试。
我们发现C语言函数在编程中的作用非常重要,能够帮助我们实现代码的模块化和封装。
同时,通过函数的参数传递方式可以提高代码的复用性,通过函数的返回值可以获得函数的执行结果,避免了代码之间的耦合性。
另外,通过递归调用函数可以简化代码的实现和理解,但同时也需要注意递归的终止条件和递归的效率问题。
四、实验总结通过本次实验,我们总结出以下几个重要的收获和体会:1. 函数是C语言中的基本概念,是代码模块化和可读性的重要手段。
c语言函数的定义格式

C 语言函数的定义由函数声明和函数体两部分组成。
通常情况下,函数定义的格式如下:```c返回类型函数名(参数类型参数1, 参数类型参数2, ...) {/* 函数体*/}```其中:- 返回类型:指明函数的返回值类型,如`int`、`float`、`double` 等。
- 函数名:为函数起一个名称,用于在程序中调用该函数。
- 参数类型和参数名:指明函数的参数类型和参数名,多个参数之间用逗号分隔。
参数名在函数体内可以用来表示该参数的值。
- 函数体:由一些语句组成,实现函数的具体功能。
下面是一个示例:```c#include <stdio.h>int add(int x, int y) {return x + y;}int main() {int a = 5, b = 3, sum;sum = add(a, b);printf("%d + %d = %d\n", a, b, sum);return 0;}```在上面的示例中,函数`add` 用于计算两个整数的和。
函数有两个参数,都是`int` 类型。
函数体中使用了`return` 语句返回计算结果。
`main` 函数调用了`add` 函数,并输出了计算结果。
函数声明和函数定义不同。
函数声明是指函数的原型声明,用于告诉编译器函数的返回类型和参数类型。
函数声明不需要函数体,一般放在程序的头部。
示例代码中没有给出函数声明,因为`add` 函数在`main` 函数前面被定义了,所以编译器可以自动识别出函数的原型。
但是,为了保证代码的可读性和可维护性,应该在程序开头给出所有函数的声明。
函数声明的格式如下:```c返回类型函数名(参数类型参数1, 参数类型参数2, ...);```下面是一个包含函数声明和函数定义的完整示例:```c#include <stdio.h>int add(int, int);int main() {int a = 5, b = 3, sum;sum = add(a, b);printf("%d + %d = %d\n", a, b, sum);return 0;}int add(int x, int y) {return x + y;}```在这个示例中,`add` 函数在`main` 函数前被声明,声明了函数的返回类型和参数类型,但没有给出参数名。
C语言—函数(function)函数定义、函数声明、函数调用!

C语⾔—函数(function)函数定义、函数声明、函数调⽤!转载:函数作⽤:提⾼代码复⽤率,提⾼程序模块组织性。
分类:系统库函数,标准C库 ·libc1):必须要引⼊头⽂件#include函数声明2):根据函数库函数原型,调⽤函数⽤户⾃定义函数bubble_sort() , ruprint(),除了需要提供函数原型之外,还需要提供函数实现。
使⽤函数:函数定义、函数声明、函数调⽤函数定义:函数定义必须包含“函数原型”和函数体。
函数原型:返回值类型 + 函数名 + 形参列表形参列表:形式参数列表,⼀定包含类型名、形参名。
//加法函数int add(int a, int b)函数体:⼀对{}包裹函数实现int add(int a , nit b){ int ret = a + b; return 0;}函数调⽤:包含函数名(实参列表)实参:(实际参数)在调⽤时,传参必须严格按照形参填充,(参数个数,类型顺序)实现在调⽤时,没有类型指述符。
int m = 20;int n = 34;inr ret = add(m, n);函数声明:包含函数原型(返回值类型 + 函数名 + 形参列表)int add(int a, int b);要求在函数调⽤之前,编译器必须是过函数定义,否则要求函数声明。
如果没有函数声明,编译器默认“隐式声明”,编译器认为所有的函数,返回值都是int 可以根据函数调⽤,推断函数原则。
#include内部,包含函数声明。
exit 函数return 关键字,返回值当前函数调⽤,将返回值返回调⽤者(在底层,会调⽤exit() 函数)。
exit () 函数 : 退出当前程序函数声明://int test(int a, char ch);int test(int, char); //函数声明的简化写,声明时形参可以省略//函数调⽤int main(void){ int ret = test(10, 'a'); //test函数调⽤结束,return 给 main printf("test函数返回:ret = %d\n", ret); //return 0; //返回给调⽤者(启动例程) exit(0); //结束程序}//函数定义int test(int a, char ch);{ printf("a = %d\n", a); printf("ch = %d\n", ch); exit(97); //使⽤#include(stdib.h)}多⽂件编程解决⽅案—右键—添加—新建项⽬多⽂件—右键—设为启动项⽬头⽂件守卫:为了防⽌头⽂件被重复包含1):#pragma Once是VS⾃动⽣成的,只应⽤于windows系统2):#ifndef HEAD_H#define HEAD_H头⽂件内容:#include//宏定义:#define PI 3.14函数声明:类型定义:#endif#ifndef _HEAD_H_ //标准引⼊头⽂件#define _HEAD_H_//include 头⽂件#include#include#include#include#include//函数声明int add(int a, int b);int sub(int a, int b);//宏定义#define PI 3.14类型定义:#endif< > 包裹的是系统库头⽂件“ ” 包裹的是,⽤户⾃定义头⽂件// main 函数所在的 C · 头⽂件#include " head.h";▼往期精彩回顾▼C语⾔—创建function并使⽤初始化arrC语⾔—指针(pointer)and 内存单元使⽤!C语⾔——数组的定义和初始化。
C语言函数的定义与使用

C语言函数的定义与使用C语言是一种通用的高级计算机编程语言,广泛应用于系统软件、嵌入式系统和游戏开发等领域。
在C语言中,函数是一种非常重要的代码块,用于实现特定的功能。
函数的定义和使用是C语言程序的基本组成部分之一、本文将详细介绍C语言函数的定义与使用。
一、函数定义函数的定义包括函数头和函数体两部分。
函数头包括函数的返回类型、函数名和参数列表,函数体则包含了具体的代码实现。
函数的定义格式如下:返回类型函数名(参数列表)//函数体代码其中,返回类型指定了函数执行完毕后的返回值类型,可以是整型、浮点型、字符型、指针等。
函数名是用来唯一标识函数的名称,参数列表指定了函数接收的参数类型和参数个数。
下面是一个简单的例子,展示了一个求两个整数和的函数的定义:int sum(int a, int b)int result = a + b;return result;上述例子中,函数名为sum,返回类型为int,参数列表为两个整型变量a和b。
在函数体中,将a和b的和赋值给result,并通过return语句将result作为结果返回。
二、函数使用使用函数可以实现代码的复用,提高程序的可读性和可维护性。
在程序中调用函数时,可以通过函数名和实际参数来使用函数。
函数调用的一般格式如下:函数名(实际参数列表)在调用函数时,函数名后面的括号内可以填入实际参数列表。
实际参数是调用函数时传递给函数的具体数值。
下面是一个例子,展示了如何调用上述求和函数:#include <stdio.h>int sum(int a, int b); // 函数声明int mainint x = 1, y = 2;int result = sum(x, y); // 函数调用printf("The sum of %d and %d is %d\n", x, y, result);return 0;上述例子中,main函数中的sum(x, y)调用了上文定义的sum函数。
C语言自定义函数的方法

C语言自定义函数的方法C语言是一种面向过程的编程语言,它提供了定义和调用自定义函数的方法,通过自定义函数,我们可以将一段代码逻辑封装在一个函数中,从而提高代码的可读性、可维护性和重用性。
下面是关于C语言自定义函数的方法的详细介绍。
在C语言中定义自定义函数的方法如下:1.函数声明和函数定义在使用函数之前,需要进行函数声明或函数定义。
函数声明是告诉编译器函数的存在,函数定义是实现函数的具体内容。
函数声明的语法为:```返回类型函数名(参数列表);```其中,返回类型是指函数返回的数据类型,函数名是函数的标识符,参数列表是函数的参数及其数据类型。
函数定义的语法为:```返回类型函数名(参数列表)函数体```其中,函数体是具体实现函数功能的代码。
2.函数的返回值函数可以有返回值,也可以没有返回值。
返回值是函数执行完毕后返回给调用者的结果。
如果函数没有返回值,返回类型应声明为`void`,例如:```void function_name(参数列表)函数体```如果函数有返回值,返回类型可以是任意基本数据类型,例如:```int function_name(参数列表)函数体return 返回值;```函数体内的代码通过`return`语句返回结果。
3.函数的参数函数可以有参数,参数用于向函数传递数据。
参数可以是基本数据类型,也可以是数组、指针、结构体等复杂数据类型。
函数的参数列表中可以包含一个或多个参数,参数之间用逗号隔开。
例如:```void function_name(int arg1, float arg2)函数体```在函数体内,可以使用参数名称来引用参数的值。
4.函数的调用在程序中调用函数时,可以使用函数名后跟随参数列表的方式来调用函数。
例如:```function_name(arg1, arg2);```5.函数的递归调用C语言支持函数的递归调用,即在函数体内部调用函数本身。
递归函数需要满足终止条件,否则会导致无限递归。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
失而保留原值,即其占用的存储单元不释放,在下一次函数调用时,该 变量已有值,就是上一次函数调用结束时的值。 静态局部变量在静态存储区分配存储单元,在程序的整个运行期间都不 释放。静态局部变量是在编译时赋初值的,即只赋初值一次。 在 SDT 编译器中,建议对静态局部变量赋初值,否则该静态局部变量的 初值为不确定值。在其他编译器中,未初始化的静态局部变量的初值可 能为零,这由具体的编译器所决定,使用前最好测试一下。 寄存器变量 register 带 register 修饰符的变量暗示(仅仅是暗示而不是命令)编译程序本 变量将被频繁使用,如果可能的话,应将其保留在 CPU 的寄存器中,以 加快其存取速度。 对于现有的大多数编译程序,最好不要使用 register 修饰符。因为它 是对早期低效的 C 编译程序的一个很有价值的补充。随着编译程序技术 的进步,在决定哪些变量应当被存到寄存器中时,现在的 C 编译程序能 比程序员做出更好的决定。 全局变量 在函数之外定义的变量称为外部变量,外部变量是全局变量,它可以为 本文件中其他函数所共用。全局变量都是静态存储方式,都是在编译时 分配内存,但是作用范围有所不同。 静态外部变量 static 静态外部变量只能在本文件中使用。所以静态外部变量应该在当前源文 件中声明和定义。
者)。 一个良好的编程习惯是在头文件中声明函数的原型。这可方便编译程序 查错。定义函数时,缺省的函数类型是外部函数。如:void fun2(void); 和 extern void fun2(void); 其函数类型是等价的,但前一个是定义函 数,后一个是声明函数。 小结 编写程序,尤其是大型程序时,建议采用上文所述的方法对不同的变量、 函数进行必要的声明、定义。做好这些细节上的事务,可以为您的编程、 调试、移植等带来很大的方便。
下例声明了一个变量和一个结构,定义了两个变量,其中一个定义带初 始化: extern int decl1; // this is a declaration
struct decl2
{
int member;
};
// this just declares the type – no variable
mentioned
void MasterFunction(void) { „ rc = stat_func( ); „ }
static int stat_func(void) {
„ return rc; }
外部函数 对于可在当前源文件以外使用的函数,应该在一个头文件中声明。其他 源文件可通过包含这个头文件或进行声明来使用这些函数(推荐用前 者)。 一个良好的编程习惯是在头文件中声明函数的原型。这可方便编译程序 查错。定义函数时,缺省的函数类型是外部函数。如:void fun2(void); 和 extern void fun2(void); 其函数类型是等价的,但前一个是定义函
void MasterFunction(void) { „ rc = stat_func( ); „ }
static int stat_func(void) {
„ return rc; }
外部函数 对于可在当前源文件以外使用的函数,应该在一个头文件中声明。其他 源文件可通过包含这个头文件或进行声明来使用这些函数(推荐用前
件中定义,在头文件中声明。
内部函数
只在当前源文件中使用的函数应该说明为内部函数。内部函数应该在当
前源文件中声明和定义。若内部函数在头文件中声明,其他源文件通过
包含这个头文件也可使用这个函数,但这样就失去了其做为内部函数的
意义。 优点:使用内部函数,可以使函数只局限于所在文件。这避免了与其他 源文件中可能出现的同名函数发生冲突。 例: File: function1.c #include “function1.h” static int stat_func(void);
包含这个头文件也可使用这个函数,但这样就失去了其做为内部函数的
意义。
优点:使用内部函数,可以使函数只局限于所在文件。这避免了与其他
源文件中可能出现的同名函数发生冲突。
例:
File: function1.c #include “function1.h” static int stat_func(void);
struct decl2
{
int member;
};
// this just declares the type – no variable
mentioned
int
def1 = 8; // this is a definition
int
def2; // this is a definition
函数
内部函数的声明和定义多在当前源文件中完成;而外部函数通常在源文
C 语言函数定义和函数声明
变量 在将变量前,先解释一下声明和定义这两个概念。声明一个变量意味着 向编译器描述变量的类型,但并不为变量分配存储空间。定义一个变量 意味着在声明变量的同时还要为变量分配存储空间。在定义一个变量的 同时还可以对变量进行初始化。 局部变量通常只定义不声明,而全局变量多在源文件中定义,在头文件 中声明。 局部变量 在一个函数的内部定义的变量是内部变量,它只在本函数范围内有效。 自动变量 auto 函数中的局部变量,其缺省格式是自动变量类型。例如,在函数体中 int b, c=3; 和 auto int b, c=3; 是等价的。 自动变量是动态分配存储空间的,函数结束后就释放。自动变量如不赋 初值,则它的值是一个不确定的值。 静态局部变量 static 静态局部变量是指在函数体内声明和定义的局部变量,它仅供本函数使 用,即其他函数不能调用它。静态局部变量的值在函数调用结束后不消 失而保留原值,即其占用的存储单元不释放,在下一次函数调用时,该 变量已有值,就是上一次函数调用结束时的值。 静态局部变量在静态存储区分配存储单元,在程序的整个运行期间都不 释放。静态局部变量是在编译时赋初值的,即只赋初值一次。
在 SDT 编译器中,建议对静态局部变量赋初值,否则该静态局部变量的 初值为不确定值。在其他编译器中,未初始化的静态局部变量的初值可 能为零,这由具体的编译器所决定,使用前最好测试一下。 寄存器变量 register 带 register 修饰符的变量暗示(仅仅是暗示而不是命令)编译程序本 变量将被频繁使用,如果可能的话,应将其保留在 CPU 的寄存器中,以 加快其存取速度。 对于现有的大多数编译程序,最好不要使用 register 修饰符。因为它 是对早期低效的 C 编译程序的一个很有价值的补充。随着编译程序技术 的进步,在决定哪些变量应当被存到寄存器中时,现在的 C 编译程序能 比程序员做出更好的决定。 全局变量 在函数之外定义的变量称为外部变量,外部变量是全局变量,它可以为 本文件中其他函数所共用。全局变量都是静态存储方式,都是在编译时 分配内存,但是作用范围有所不同。 静态外部变量 static 静态外部变量只能在本文件中使用。所以静态外部变量应该在当前源文 件中声明和定义。 外部变量 extern 定义函数中的全局变量时,其缺省格式是外部变量类型。外部变量应该 在一个头文件中声明,在当前源文件中定义。外部变量允许其他文件引 用。
int
def1 = 8; // this is a definitionFra bibliotekint
def2; // this is a definition
函数
内部函数的声明和定义多在当前源文件中完成;而外部函数通常在源文
件中定义,在头文件中声明。
内部函数
只在当前源文件中使用的函数应该说明为内部函数。内部函数应该在当
前源文件中声明和定义。若内部函数在头文件中声明,其他源文件通过
外部变量 extern 定义函数中的全局变量时,其缺省格式是外部变量类型。外部变量应该 在一个头文件中声明,在当前源文件中定义。外部变量允许其他文件引 用。 下例声明了一个变量和一个结构,定义了两个变量,其中一个定义带初 始化: extern int decl1; // this is a declaration
数,后一个是声明函数。 小结 编写程序,尤其是大型程序时,建议采用上文所述的方法对不同的变量、 函数进行必要的声明、定义。做好这些细节上的事务,可以为您的编程、 调试、移植等带来很大的方便。
变量 在将变量前,先解释一下声明和定义这两个概念。声明一个变量意味着 向编译器描述变量的类型,但并不为变量分配存储空间。定义一个变量 意味着在声明变量的同时还要为变量分配存储空间。在定义一个变量的 同时还可以对变量进行初始化。 局部变量通常只定义不声明,而全局变量多在源文件中定义,在头文件 中声明。 局部变量 在一个函数的内部定义的变量是内部变量,它只在本函数范围内有效。 自动变量 auto 函数中的局部变量,其缺省格式是自动变量类型。例如,在函数体中 int b, c=3; 和 auto int b, c=3; 是等价的。 自动变量是动态分配存储空间的,函数结束后就释放。自动变量如不赋 初值,则它的值是一个不确定的值。 静态局部变量 static 静态局部变量是指在函数体内声明和定义的局部变量,它仅供本函数使 用,即其他函数不能调用它。静态局部变量的值在函数调用结束后不消