04-数据类型、常量、变量

一、数据

1.什么是数据

生活中时时刻刻都在跟数据打交道,比如体重数据、血压数据、股价数据等。在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据、图片数据、视频数据,还有聊QQ时产生的文字数据、用迅雷下载的文件数据等。

2.数据的分类

计算机中存储的数据可以分为两种:静态数据和动态数据。
1>静态数据

  • 概念:静态数据是指一些永久性的数据,一般存储在硬盘中。硬盘的存储空间一般都比较大,现在普通计算机的硬盘都有500G左右,因此硬盘中可以存放一些比较大的文件。
  • 存储的时长:计算机关闭之后再开启,这些数据依旧还在,只要你不主动删掉或者硬盘没坏,这些数据永远都在。
  • 哪些是静态数据:静态数据一般是以文件的形式存储在硬盘上,比如文档、照片、视频等。

2>动态数据(临时数据)

  • 概念:动态数据指在程序运行过程中,动态产生的临时数据,一般存储在内存中。内存的存储空间一般都比较小,现在普通计算机的内存只有4G左右,因此要谨慎使用内存,不要占用太多的内存空间。
  • 存储的时长:计算机关闭之后,这些临时数据就会被清除。
  • 哪些是动态数据:当运行某个程序(软件)时,整个程序就会被加载到内存中,在程序运行过程中,会产生各种各样的临时数据,这些临时数据都是存储在内存中的。当程序停止运行或者计算机被强制关闭时,这个程序产生的所有临时数据都会被清除。
    你可能会问:既然硬盘的存储空间这么大,为何不把所有的应用程序加载到硬盘中去执行呢?有个主要原因是内存的访问速度比硬盘快N倍。
    程序员最关心的是什么数据呢?

3>静态数据和动态数据的转换


静态数据和动态数据的转换

3.数据的大小

1)不管是静态还是动态数据,都是0和1组成的。0和1如何组成这么多的数据?
2)数据都有大小,静态数据就会占用硬盘的空间,动态数据就占用内存的空间
3)数据越大,包含的0和1就越多,比特位和字节
4)1 KB = 1024 B,1 MB = 1024 KB,1 GB = 1024 MB,1 TB = 1024 GB

4.app中的各种数据

app中的各种数据
app中的各种数据

5.C语言中的数据类型

由于app中的数据种类繁多,为了方便操作数据,C语言数据进行了分类


C语言中的数据类型

二、常量

1.什么是常量

常量,表示一些固定的数据

2.常量的分类

1> 整型常量(int)
包括了所有的整数,比如6、27、109、256、-10、0、-289等

2> 浮点型常量(float\double)
浮点型常量分为double和float两种数据类型

  • double:双精度浮点型,其实就是小数。比如5.43、-2.3、0.0等(注意,0.0也算是个小数)
  • float:单精度浮点型,也是小数,比double的精确程度低,也就是说所能表示的小数位数比较少。为了跟double区分开来,float 型数据都是以f结尾的,比如5.43f、-2.3f、0.0f。需要注意的是,绝对不能有10f这样格式的,编译器会直接报错,只有小数才允许加上f。

3> 字符常量(char)

  • 将一个数字(09)、英文字母(az、A~Z)或者 其他符号(+、-、!、?等)用单引号括起来,这样构成的就是字符常量。比如'6'、'a'、'F'、'+'、'$'等。
    注意:单引号只能括住1个字符,而且不能是中文字符,下面的写法是错误的:'abc'、'123456'、'男'

4> 字符串常量

  • 将一个或者多个字符用双引号("")括起来,这样构成的就是字符串常量。比如"6"、"男"、"哇哈哈"、"abcd"、"my_car4",其实printf("Hello World");语句中的"Hello World"就是字符串常量。
    那究竟6、'6'、"6"在用法上有什么区别呢?这个先不作讨论,以后会介绍。
3.习题

下面的都是什么类型的常量?
10.6 19.0f 0.0 0 ‘A’ “男” “ZhangSan” 294 ‘+’

三、变量

1.什么是变量

当一个数据的值需要经常改变或者不确定时,就应该用变量来表示。比如游戏积分。

2.定义变量

1>目的

  • 任何变量在使用之前,必须先进行定义。
  • 定义变量的目的是:在内存中分配一块存储空间给变量,方便以后存储数据。
  • 如果定义了多个变量,就会为这多个变量分别分配不同的存储空间。

2>格式
变量类型 变量名;
比如int num;

  • 变量名属于标识符
  • 变量类型
  • 不同类型的变量占用不同大小的存储空间。内存极其有限,分配适当的存储空间
  • 约束变量所存放的数据类型(方便运算)

3>实例

int main()
 {
     int i;
char c;
int a, b;
     return 0;    
 }
为变量分配存储空间
3.变量的使用

1>赋值

  • 往变量里面存点东西,就是赋值。赋值语句后带个分号;
i = 10;

注意:这里的等号=,并不是数学中的“相等”,而是C语言中的赋值运算符,作用是将右边的常量10赋值给左边的变量i

  • 第一次赋值,可以称为“初始化”
  • 初始化的两种形式
  • 先定义,后初始化:int a; a = 10;
  • 定义的同时进行初始化:int a = 10;

2>修改

  • 可以修改变量的值,多次赋值。每次赋值都会覆盖原来的值
i = 10;
i = 20;

变量i最后的值是20

  • 使用printf输出一个\多个变量的值
int a = 10, c = 11;
printf("a=%d, c=%d", a, c);
  • double\float\char的输出,格式符的一些小技巧
double height = 1.55;
char blood = 'A';
printf("height=%.2f, 血型是%c",  height,  blood);
  • 简单的加减操作
int a = 10 + 20;
  • 没有初始化时不要拿来使用(下面的写法是不建议的)
int score;
printf("score=%d", score);

3>变量之间值的传递

  • 可以将一个变量的值赋值给另一个变量
int a = 10;
int b = a;
  • 连续赋值
a = b = 10;  
4.常见错误

1>变量名相同

int a = 10;  int a = 12;

2>变量的作用域不对

  • 变量的创建和释放过程
  • 代码块作用域
 {  int a = 10; }
5.习题

1>交换整型变量a、b的值。比如a=10、b=11;交换之后a的值是11,b的值是10。用两种方式实现:

  • 使用第三方变量
int temp;
temp = a;
a = b;
b = temp;
  • 不使用第三方变量
a = b - a;
b = b - a;
a = b + a;

2>观察下图的游戏界面,思考需要定义多少个变量?

游戏界面

四、思考与练习

1、C程序是由什么构成的?

函数

2、C程序的源文件拓展名是什么?

.c 或者 .C

3、C程序的源文件能直接运行么?为什么?

不能直接运行。因为计算机只能识别0和1,源文件包含了很多C语言的英文代码,计算机是不可能看懂的

4、C程序从开发到运行需要哪些步骤?

1> 编写.c源文件
2> 编译.c源文件为.o目标文件
3> 链接.o目标文件为可执行文件
4> 运行可执行文件

5、拓展名为.c、.o、.out分别是什么文件?在C程序开发的哪个阶段产生的?

1> .c是C语言源文件,在编写代码的时候创建
2> .o是目标文件,在编译成功的时候产生
3> .out是可执行文件,在链接成功的时候产生

6、下面这段程序是否能独立运行成功?

#include <stdio.h>
int test()
{
    printf("哈哈哈哈\n");
    return 0;
}

不能独立运行成功,因为缺少main函数。把test改为main就能运行成功

7、下面这段程序能否运行成功?

int main()
{
    printf("哈哈哈哈\n");
    return 0;
}

可以运行成功,但是编译器会有警告信息,因为缺少了#include <stdio.h>

8、编写程序在屏幕上输入下列内容

#include <stdio.h>

  /*
  *
  ***
  *****
  *******
  */

int main()
{
    printf("*\n");
    printf("***\n");
    printf("*****\n");
    printf("*******\n");
    return 0;
}

9、说出下列程序的输出结果(不要借助终端指令)

#include <stdio.h>

int main()
{
    int a = 20;
    int score = a + 100;
    printf("%d\n", score);
    
    {
        int score = 50;
        {
            score = 10;
            printf("%d\n", score);
        }
        a = 10;
    }
    
    {
        score = a + 250;
        int score = 30;
        printf("%d", score);
    }
    
    printf("%d\n", score);
    return 0;
}

输出结果是:(注意:有个%d后面是没有\n的)
120
10
30260




五、程序实现

01-变量

void variable(void) {
    
    /*
    1.变量的定义
    变量类型 变量名;
    int score;
    
    2.变量的赋值
    score = 99;
    score = a;
    score = b = 95;
    
    3.变量的输出
    int a = 125;
    printf("%i", a);
    常用格式符:
    1> %d\%i 整数 (int)
    2> %f 小数 (float, double)
    3> %c 字符 (char)
     */
    
    
    /*
    int score;
    // 赋值操作(初始化)
    score = 100;
    score = 90;
    
    char c;
    c = 'A';
    int a = 31;
    // int d,e,f;
    int b;
    
    b = a = 45;
    b = 32;
     */
    
    // 变量:只要有不确定的数据,就应该定义变量来保存
    int score = 145;
    // 1:15
    int time = 75;
    int bestScore = 9999;
    // %d\%i是一个格式符(占位符),只能输出整数
    printf("分数是%d\n", score);
    printf("time = %d\nbestScore = %d\n", time, bestScore);
    
    float height = 1.78f;
    // %f用来输出小数,默认是6位小数
    printf("身高是%.2f\n", height);
    
    char scoreGrade = 'D';
    printf("积分等级是%c\n", scoreGrade);
    
    printf("分数是%d,身高是%f,等级是%c\n", score, height, 'C');
}

02- 变量使用注意_1

int variable_usage_note_test_1(void) {
    
    int score = 200;
    return score;
}
void variable_usage_note_1(void) {
    
    /*
     1.作用域(作用范围)
     从定义变量的那行代码开始,一直到函数结束
     */
    
    int score;
    variable_usage_note_test_1();
    score = 97;
    
    printf("score = %d\n", score);
    
    /*
    错误写法
    int b;
    b = a;
    */
    
    int c = 56;
    int a = 67;
    printf("c = %d, a = %d\n", c, a);
}

03-变量使用注意_2

int variable_usage_note_test_2(void) {
    int s = 32;
    return s;
}
/// 变量使用注意_2
void variable_usage_note_2(void) {
    
    {
        double height = 1.65;
        height = height + 1;
        printf("height = %f\n", height);
    }
    
    /*
    {
        int a = 9;
    }
    printf("a = %d\n", a);
    */
    
    int score = 99;
    {
        int score = 199;
        {
            int score;
            score = 55;
            printf("score_1 = %d\n", score);
        }
        printf("score_2 = %d\n", score);
    }
    printf("score_3 = %d\n", score);
}

04-变量练习-交换变量的值

void variable_exercise_exchange_variable_value(void) {
    
    /*
     a = 10
     b = 11
     交换之后
     a -> 11
     b -> 10
     
     1.利用第三方变量(工作,掌握)
     int temp = a;
     a = b;
     b = temp;
     
     2.不利用第三方变量(面试,有印象)
     a = b - a;
     b = b - a;
     a = b + a;
     */
    
    int a = 10;
    int b = 11;
    
    a = b - a;
    b = b - a;
    a = b + a;
    
    printf("a = %d, b = %d\n", a, b);
}

05-变量的内存分析

void  analysis_variables_memory(void) {
    
    /*
     1.内存寻址由大到小,优先分配内存地址比较大的字节给变量
     2.变量越先定义,内存地址就越大
     3.取得变量的地址:&变量名
     4.输出地址:%p
     5.一个变量一定先进行初始化,才能使用
     */
    
    // 内存寻址由大到小
    int a = 10;
    int b = 20;
    int c;
    
    // &是一个地址运算符,取得变量的地址
    // %p用来输出地址
    // 0x7ffeefbff48c
    printf("a的地址是:%p\n", &a);
    // 0x7ffeefbff488
    printf("b的地址是:%p\n", &b);
    // 0x7ffeefbff484
    printf("c的地址是:%p\n", &c);
    
    //由于变量c没有经过初始化,所以直接拿来使用是不对的
    //int d = c  + 1;
    
    printf("c的值是%d\n", c);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352