1、常量
-
define
define方式定义常量,预处理命令/宏定义命令
常量一般大写
#include <stdio.h>// 定义数值常量#define LENGTH 10#define WIDTH 5// 定义单个字符#define NEWLINE '\n'// 定义字符串常量#define NAME "Jack"int main(int argc, const char * argv[]) {printf("%d\n",LENGTH*WIDTH );printf("%s\n",NAME);printf("%c",NEWLINE);return 0;}
const
const方式定义常量
int main(){const int LENGTH = 10;const int WIDTH = 5;const char NEWLINE = '\n';int area;area = LENGTH * WIDTH;printf("value of area : %d", area);printf("%c", NEWLINE);return 0;}
2、变量
变量的声明有两种情况:
- 一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间
- 另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它
extern int i; //声明,但没有建立存储空间 int i; //声明,已经建立存储空间
- 一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间
外部变量
#include <stdio.h>// 函数外定义变量x yint x ;int y ;int add(){// 函数内声明使用外部变量,并赋值extern short x = 3;extern int y = 5;return x+y;}int main(int argc, const char * argv[]) {printf("%d\n",add() );return 0;}
extern
我们知道,程序的编译单位是源程序文件,一个源文件可以包含一个或若干个函数。在函数内定义的变量是局部变量,而在函数之外定义的变量则称为外部变量,外部变量也就是我们所讲的全局变量。它的存储方式为静态存储,其生存周期为整个程序的生存周期。全局变量可以为本文件中的其他函数所共用,它的有效范围为从定义变量的位置开始到本源文件结束。
- 然而,如果全局变量不在文件的开头定义,有效的作用范围将只限于其定义处到文件结束。如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字 extern 对该变量作“外部变量声明”,表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。
extern用法1:使用本文件后定义的全局变量
#include <stdio.h>int max(int x, int y);int main(int argc, const char * argv[]) {// 此处注释掉会报错//extern int g_x;//extern int g_y;int result = max(g_x,g_y);printf("%d\n",result);return 0;}int g_x = 10;int g_y = 20;int max(int x, int y){return (x>y ? x : y);}
extern用法2:使用其他文件中定义的全局变量
/******************hello.c/******************/#include <stdio.h>#include "max.c"/*定义两个全局变量*/int g_X=10;int g_Y=20;int max();int main(void){int result;result = max();printf("the max value is %d\n",result);return 0;}/******************max.c/******************//*外部变量声明*/extern int g_X ;extern int g_Y ;int max(){return (g_X > g_Y ? g_X : g_Y);}
