C语言中#define、static、auto和extern的定义与用法

5星 · 超过95%的资源 需积分: 15 1 下载量 114 浏览量 更新于2024-09-16 收藏 30KB DOC 举报
"C语言宏定义、静态变量与自动变量的使用" 在C语言中,`#define`宏定义是一种预处理指令,它用于创建符号常量或者简单的代码替换。在给定的【标题】和【描述】中,我们看到一个使用`#define`的例子,其中定义了两个布尔值TRUE和FALSE以及一个宏SQ用来计算平方。 ```c #define TRUE 1 #define FALSE 0 #define SQ(x) (x)*(x) ``` TRUE和FALSE是宏定义的整型常量,分别代表1和0,这在编写条件语句时非常有用,提供了更易读的代码。SQ(x)则是一个计算平方的宏,接受一个参数x,返回x的平方值。在main函数中,SQ(num)被用于计算用户输入的数字的平方。 接下来,我们看看【部分内容】中关于静态变量(static)和自动变量(auto)的用法。 【程序41】展示了静态变量static_var如何保持其值在函数调用之间。每次调用varfunc(),static_var的值都会增加,而普通变量var在每次调用时都会被重置为0。 ```c static int static_var=0; ``` 这里,static_var是静态变量,它的生命周期贯穿整个程序,值会在每次函数调用中保留。 【程序42】和【程序43】探讨了自动变量auto的作用。在C语言中,局部变量默认就是auto类型,它们的生命周期仅限于定义它们的代码块。在【程序42】中,内部的自动变量num只在它所在的花括号内有效,每次循环迭代时都会被重新初始化为1。 ```c { auto int num=1; } ``` 而在【程序43】中,内部的静态变量num,尽管也在花括号内定义,但它的值在每次循环中都会保留,从而呈现出不同的行为。 ```c { static int num=1; } ``` 最后,【程序44】涉及的是外部链接(external),这通常用于声明全局变量或函数。外部变量可以在程序的不同源文件之间共享。由于这部分内容不完整,没有给出具体代码,但通常外部变量是通过不加任何存储类别修饰符(如static或auto)来声明的,并且在所有函数外部定义。 总结来说,这些程序实例展示了C语言中`#define`宏定义、静态变量static和自动变量auto的不同用法。宏定义提供了代码替换功能,静态变量在函数调用间保持其值,而自动变量在每次进入其作用域时重新初始化。理解这些概念对于编写高效、可靠的C程序至关重要。