变量定义和声明

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

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

 #include <stdio.h>

 int main() {
int a, b;
printf("%p\n%p\n", &a, &b); // output(e.g.): 0x7fff1a0582dc 0x7fff1a0582d8
printf("%p\n%p\n", a, b); // output(e.g.): (nil) (nil)
}

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

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

常量的定义和声明

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

 #include <stdio.h>
#include <string.h> #define DAYS_ONE_WEEK 7
const int HOURS_ONE_DAY = ; int main() {
printf("%d\n", DAYS_ONE_WEEK); // output: 7
printf("%d\n", HOURS_ONE_DAY); // output: 24
}

(2) 两者区别

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

最新文章

  1. VirtualBox提示:错误,创建一个新任务失败,被召者解决办法
  2. 爱情之路(codevs 2070)
  3. JAVA基础-子类继承父类实例化对象过程
  4. C#常用的字符串操作, 包括截取
  5. Hadoop on Mac with IntelliJ IDEA - 3 解决MRUnit - No applicable class implementing Serialization问题
  6. python s12 day3
  7. 有关phpmailer的详细介绍及使用方法
  8. PHP 中的数组
  9. js获得url内的参数
  10. 产品在焊接时出现异常,尤其是尺寸较大的QFP芯片,焊接后出现虚焊、冷焊、假焊等问题?
  11. 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)
  12. win10出现&quot;本地计算机上的MySQL57服务启动后停止&quot;
  13. 类A是公共的,应在名为A.java的文件中声明错误
  14. 关于docker使用
  15. DataGridView添加的数据最后一步无法生效的问题。
  16. 修改Electron的libcc(libchromiumcontent)源码,重新编译electron, 设置event.isTrusted为true
  17. react学习笔记2之正确使用状态
  18. # 2019-2020-3 《Java 程序设计》第二周学习总结
  19. 为什么watch机制不是银弹?
  20. php获取汉字拼音首字母的方法

热门文章

  1. elk快速入门-filebeat
  2. 延长zencart1.5.x后台的15分钟登录时间和取消90天强制更换密码
  3. git生成公钥public key并添加SSH key。git乌龟gerrit下推送git【server sent :publickey】
  4. jquery中.each()方法遍历循环如何终止方法
  5. java WebSocket HTML页面
  6. target runtime com.genuitec.runtime.genuitec.jee60 is not defined
  7. JS单线程和异步
  8. C# 常用方法——base64字符串转图片
  9. Prism框架的Module(模块化)编程
  10. 51 Nod 1282 时钟 (循环中的最小表示+哈希)