聊聊C语言-编程世界的容器

上一篇聊聊C语言-存储世界的奥秘,我们介绍了计算机的整个存储体系设计,了解了我们的数据在计算机中是怎么被存储的。然而在我们的编程中我们的代码也是按照这个结构被计算机处理的。只是我们用编程语言来控制计算机去按照我们的想法来处理这些数据。下面我们进入正题C语言世界的变量声明和定义,变量就像是容器一样存放着我们在编程时用到的数据。。

1.什么是数据类型

数据类型可以理解为固定内存大小的别名,它就是创建变量的模子。

2.变量的本质

变量是一段实际连续存储空间的别名,程序中通过变量来申请并命名存储空间,通过变量的名字可以使用存储空间

#include <stdio.h>

int main()

{

char c = 0;

short s = 0;

int i = 0;

printf("%d, %d\n", sizeof(char), sizeof(c));

printf("%d, %d\n", sizeof(short), sizeof(s));

printf("%d, %d\n", sizeof(int), sizeof(i));

getchar();

return 0;

}

上面的这段程序输出了char,short,int类型所占的内存字节数。

3.变量声明的规则

什么事情都将规则,尤其在编程的世界里面,如果不讲规则那就会有无数的bug等着你。我们来说说变量声明的规则。

  • 数字、字母、下划线,都可以为变量命名。
  • 做为变量名的开头不能为数字,如 3a_是错的,而a_3或_a3是正确
  • 变量名不能为关键字,像if'else'printf 等等都不能
  • 严格区分大小写。

4.变量的定义和声明的区别

在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:

变量的声明有两种情况:

(1) 一种是需要建立存储空间的(定义、声明)。例如:int a在声明的时候就已经建立了存储空间。

(2) 另一种是不需要建立存储空间的(声明)。例如:extern int a其中变量a是在别的文件中定义的。

前者是"定义性声明(defining declaration)"或者称为"定义(definition)",而后者是"引用性声明(referncing declaration)"。从广义的角度来讲声明中包含着定义,但是并非所有的声明都是定义,例如:int a它既是声明,同时又是定义。然而对于extern a来讲它只是声明不是定义。一般的情况下我们常常这样叙述,把建立空间的声明称之为"定义",而把不需要建立存储空间称之为"声明"。

5.变量的初始化和赋值的区别

变量的初始化:是指变量在被说明的同时赋给一个初值。

变量的赋值:是给已说明的变量赋给一个特定值。

好了这篇就讲到这里,下篇我们讲讲变量的寿命,期待大家的捧场

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-06-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

【Python学习笔记之三】lambda表达式用法小结

除了def语句之外,Python还提供了一种生成函数对象的表达式形式。由于它与LISP语言中的一个工具很相似,所以称为lambda。就像def一样,这个表达式创...

2805
来自专栏新智元

【Python大神秘籍Top10】这些窍门99%的人都不知道

【新智元导读】Python神奇方法是指一些允许在自定义类中增加“神奇”功能的方法。而在Python官方文档中,有关这些方法的介绍或描述不仅内容分散,而且组织结构...

1522
来自专栏赵俊的Java专栏

由一道 Java finally 执行顺序的题引发的思考

2254
来自专栏鸿的学习笔记

Python的多继承和和Scala的trait

在业务设计过程中,除了继承这种增量进化,有些时候我们只需要给类添加功能而不是想变成某种类型,那么我们可以选择组合。在这篇文章会先介绍Python的多继承和Sca...

1223
来自专栏happyJared

设计模式入门:工厂方法模式

  工厂方法同样也是一种创建型模式,是简单工厂模式的进一步抽象和推广。根据开闭原则,在工厂方法模式中新增功能,需要添加相应的功能类和工厂类(对扩展开放,对修改关...

572
来自专栏九彩拼盘的叨叨叨

JavaScript 的变量和数据类型

信息是由数据组成的。变量可以理解成装数据的“盒子”。操作某个数据,首先要做是找到数据所在的盒子(变量)。放在变量里的数据称为变量值。

642
来自专栏chafezhou

小说python中的迭代器(Iterator)

892
来自专栏技术点滴

《Effective C++》读书摘要

《Effective C++》读书摘要 最近刚读完侯捷的《Effective C++》,相对来说,这本书的内容比较贴近基础,对于刚掌握C++基础的人会有不少的提...

1726
来自专栏nnngu

算法05 五大查找之:顺序查找

这一篇要介绍的是算法中的查找算法。查找在我们生活中无处不在,比如查公交,查机票,查酒店等等。 首先看一下查找的分类。如下图: ? 那么这一篇要总结的是顺序表中的...

37411
来自专栏技术专栏

基本排序算法

● 基础 ● 编码简单,易于实现,是一些简单情景的首选 ● 在一些特殊情况下,简单的排序算法更有效 ● 简单的排序算法思想衍生出复杂的排序算法 ● 作为...

722

扫码关注云+社区