聊聊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 条评论
登录 后参与评论

相关文章

来自专栏老秦求学

快速排序

快速排序: 设要排序的数组是A[0]……A[N-1], 思想:分治法(递归实现)关键是求出基准记录所在的位置(由于两个数之间进行交换,导致原来基准的位置发生改变...

2696
来自专栏Python

数据类型总结(二)(列表,元组,字典)

一.变量的赋值操作 x=1 a=10 b=10 # #链式赋值 a=b=c=d=e=f=10 print(a,b,c,d,e,f) #多元赋值 #方式一 x...

2618
来自专栏程序员互动联盟

【编程基础】C语言循环语句解析

循环语句是一种很重要的结构,这种结构的特点就是在某种条件下,会重复循环执行某一段代码,直到条件不成立为止。这里的条件称为循环条件,重复执行的那段代码称为循环体。...

3045
来自专栏数据结构与算法

二分图相关定理

定义:若选择一个点说明选择与它相连的所有边,最小顶点覆盖就是选择最少的点来覆盖所有的边。

793
来自专栏我的博客

echo、print、print_r、var_dump使用和区别

1、echo — Output one or more strings(输出一个或者多个字符串) 2、print — Output a string(输出一个字...

2667
来自专栏指尖下的Android

简单算法之冒泡排序

外层循环控制循环次数,内层循环控制比对元素的个数,因为冒泡排序是两两比对,五个元素的数组只需要比对四次,因为最后一个元素没有可比对的元素,内层循环判断条件j <...

632
来自专栏机器学习算法全栈工程师

客官,来嘛,谷歌小菜请你尝尝!

作者:柳行刚 编辑:王抒伟 谷歌面试题 等你来挑战 详情往下看 各位,看招 1 题目描述: 一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重...

2878
来自专栏coding for love

ES6常用新特性学习2-展开运算符

展开运算符也是我平时在书写代码是经常用到的新特性,允许一个表达式在某处展开,主要适用于数组或者类数组的展开,他给我们的coding过程带来了极大的便捷。

882
来自专栏逆向技术

C语言第五讲,语句 顺序循环选择.

括号的内容我们给真假就行, 对应到高级语言中 则是 true (真) 和 false(假)

3305
来自专栏技术博文

php 中进制之间的转换

作为一个屌丝程序员,没有丰富的经验,只是一味地敲着代码,但终究有一天,我也会成为一个技术大牛,今天学了点进制相互转换的几个函数 常见的进制: 二进制      ...

3366

扫描关注云+社区