C基础知识(2):变量&常量的定义和声明

变量定义和声明

(1) 使用int,char等类型符定义变量

使用int,char等类型符定义变量时,不管有没有指定初始值,都就已经建立了存储空间(开辟内存)。内存寻址由大到小,优先分配内存地址比较大的字节给变量,所以说变量越先定义,内存地址就越大。

1 #include <stdio.h>
2 
3 int main() {
4     int a, b;
5     printf("%p\n%p\n", &a, &b); // output(e.g.): 0x7fff1a0582dc 0x7fff1a0582d8
6     printf("%p\n%p\n", a, b); // output(e.g.): (nil) (nil)
7 }

(2) 使用extern关键字声明变量

修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。能够被其他模块以extern修饰符引用到的变量通常是全局变量。extern关键字修饰的变量可以定义在文件开头作为全局变量,也可以在函数作用域中。

 

常量的定义和声明

(1) 有两种简单的定义常量的方式:使用#define预处理器,使用const关键字。

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 #define DAYS_ONE_WEEK 7
 5 const int HOURS_ONE_DAY = 24;
 6 
 7 int main() {
 8     printf("%d\n", DAYS_ONE_WEEK);    // output: 7
 9     printf("%d\n", HOURS_ONE_DAY);    // output: 24
10 }

(2) 两者区别

宏是预处理命令,即在预编译阶段进行字节替换。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。const定义的常量,在程序运行时在常量表中,系统为它分配内存。define定义的常量,预处理时只是直接进行了替换。所以编译时不能进行数据类型检验。const定义的常量,在编译时进行严格的类型检验,可以避免出错。

 

转载于:https://www.cnblogs.com/storml/p/7738121.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值