常量一般可以概括为4种:字面常量、const修饰的常变量、#define定义的标识符常量、枚举常量。
1.字面常量
字面常量一般为常数,如1为整型常量、3.6为浮点型常量、'a'为字符常量(注意字符常量只能是一个字符。错误示范:'ab');
2.const修饰的常变量
(1)当const修饰常量时,该常量不能被重新赋值,例如:
#include <stdio.h>
int main()
{
const int n = 0;
n = 10;
return 0;
}
在编译器中会报错:
(2)当const修饰指针时,当const在*的左边是,无法通过解引用操作改变n所在地址的内容,例如:
#include <stdio.h>
int main()
{
int n = 0;
printf("%d", n);
int const * p = &n;
*p = 10;
return 0;
}
在编译器中会报错:
(3)当const修饰p时,指针变量p所指向的地址不能再被改变,例如:
#include <stdio.h>
int main()
{
int m = 0;
int n = 0;
int* const p = &m;//指针p在初始化时取变量m的地址
p = &n;
return 0;
}
在编译器中会报错:
3.#define定义的标识符常量
#include <stdio.h>
#define MAX 10
int main()
{
printf("%d", MAX);
return 0;
}
define定义MAX为10,所以使用printf函数输出MAX结果也应为10。
4.枚举常量
#include <stdio.h>
enum sex
{
MALE,
FEMALE
}
int main()
{
enum sex s=male;
return=0;
}
此时s只可以等于MALE或者FEMALE,不可以等于其他。
5.变量的作用域和生命周期
局部变量的作用域就是变量所在范围,全局变量的作用域是整个程序从开始至结束。
在同一个工程中,全局变量可以跨源文件使用,但需要先声明。如在第一个源文件中定义:
int a=100;
若要在第二个源文件中输出a的值,须先声明:
int main()
{
extern int a;
printf("%d\n",a);
return 0;
}