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

相关文章

来自专栏测试开发架构之路

程序员面试50题(4)—把字符串转换成整数[算法]

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。 分析:这道题尽管不是很难,学过C/C++语言一般都能实...

38810
来自专栏菩提树下的杨过

python:函数的高级特性

1693
来自专栏互联网杂技

理解javascript闭包前,先理解作用域链

1. 全局作用域(Global Scope)   在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:   (1)最外层函数和...

3365
来自专栏我的技术专栏

C++编译期多态与运行期多态

1024
来自专栏技术之路

c++基础 使用智能指针

三个智能指针模板(auto_ptr、unique_ptr和shard_ptr)都定义了类似指针的对象(c++11已将auto_ptr摒弃),可以将new获得(直...

1685
来自专栏青玉伏案

在Objective-C中浅谈面向对象

  接触面向对象也有一段时间了,当时是通过C++学习的OOP,后来又接触到了PHP和Java。每种OOP的语言在面向对象上或多或少都会有不同的地方,现在在学习O...

1726
来自专栏海天一树

小朋友学数据结构(5):顺序查找法

查找是最常见的数据操作之一,也是数据结构的核心运算之一,其重要性不言而喻。 顺序查找是最简单的查找策略,对于小规模的数据,顺序查找是个不错的选择。

852
来自专栏chafezhou

小说python中的迭代器(Iterator)

712
来自专栏deepcc

javascript 面向对象技术

3227
来自专栏更流畅、简洁的软件开发方式

静态变量 静态对象 静态函数和非静态函数的区别。(我的理解,大家看看对不对)

先明确一下 语言:asp.net C# 1、静态变量: static string str1 = "1234"; 2、静态对象 static SqlConn...

1835

扫码关注云+社区