常量的三种定义方式和static在c语言中的三种修饰

c语言的常量在执行期间为固定值,在定义后无法被修改
常量可以是任何的数据基本类型,可以为整形,浮点常量,字符和字符串常量
1,使用const关键字
2, 使用宏定义
3,使用枚举常量

枚举:

 1 #include<stdio.h>
 2 int main(){
 3     enum sex{
 4         male,
 5         female,
 6         unknown,
 7     };
 8     printf("%d\n%d\n%d\n", male, female, unknown);
 9     return 0;
10 }

宏定义:

1 #define i 5

const关键字修饰的常量不可被再修改,例如:

1 const int i=6;


在vs同一个工程下建立两个.c格式的文件:

在第一个.c文件下写:

1 static int g_val = 100;

在第二个.c文件下写上

 1 #include <stdio.h>
 2 #include<stdlib.h>
 3  extern int g_val;
 4 
 5 int main(){
 6      /*int g_val = 30;*/
 7     
 8     printf("%d\n", g_val);
 9     system("pause");
10     return 0;
11 }

运行结果如下:

当去掉第一个程序的static时候:

1 int g_val = 100;

再次运行第二个程序显示编译成功。

这是因为:

 static作用于同一个工程中2.c文件内的int g_val;使之从全局变量变为了局部变量,从而在1.c文件中编译器无法打印出g_val

另外在同一个工程中的不同的.c文件中如果需要引用另一个.c中的变量,需要使用extern在进入主要函数之前
c语言static的作用:
1,修饰局部变量,改变变量的生命周期,变成了整个程序;
2,修饰全局变量,改变变量的作用域,变成了当前文件;
3,修饰全局函数,改变函数的作用域,变成了当前文件
好处:
防止一个工程下成百上千个文件难免有对同一个变量的相同命名,只作用于当前文件,保证了程序的安全性。

猜你喜欢

转载自www.cnblogs.com/hetaoyuan/p/10068536.html