ARM Study Day3:标准C编程之变量、变量的输入和输出、数据类型

一、C语言的历史背景

1972年,贝尔实验室,Dennis Ritchie,为B语言增加了数据类型,并做了大量修改,使之在功能、性能和易用性方面,取得了长足进步。这就是C语言!
1973年, Dennis Ritchie用C重写了Unix内核
1978年,不朽名著《The C Programming Language》正式出版。C从贝尔实验室走向世界
1989年,美国国家标准化协会,ANSI C89
1999年,国际标准化组织,ISO C99
2011年,国际标准化组织,ISO C11

二、C程序的开发步骤

1、编辑源代码
C程序文件类型
源文件(.c后缀)
hello.c
头文件(.h后缀)
stdio.h

C语言的注释风格
从/开始,到/结束,中间是注释,无行数限制
a /* b c
d */ e
f
不能嵌套注释:/我/是大/神/
从//开始,到本行结束,单行注释
a // b c
d // e
f
可以嵌套注释:我是大神

#include指令:包含头文件
头文件扩展
#include <xxx.h>
先让gcc去到-I指定的目录去找,再找系统目录
一旦找到将头文件内容包含拷贝到hello.c中
#include “xxx.h”
先找-I目录,再找当前目录,最后找系统目录
头文件的系统目录
/usr/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.6.3/include

主函数main原型
int main(void) {
执行语句1;
执行语句2;

执行语句N;

return 0; //成功
或者
return 非0;//异常
}

2、编译预处理
3、将源预处理的结果编译为汇编代码
4、将汇编代码汇编为目标模块
5、将目标模块和库链接为可执行程序
6、将可执行程序加载到内存形成进程映像
7、处理器执行进程映像中指令

三、gcc的常用选项

-o:指定输出文件
-E:编译预处理
gcc -E hello.c -o hello.i //先预处理,包含头文件过程,生成预处理文件hello.i
-S:编译产生汇编文件
gcc -S hello.i –o hello.s //编译,将预处理文件翻译生成汇编文件hello.s
-c:汇编产生目标模块
gcc -c hello.s –o hello.o //汇编,将汇编文件翻译生成目标文件hello.o
-l:指定链接库
gcc hello.o –o hello // 链接:就是将大神的printf函数代码包含合并生成helloworld可执行程序

暂时不用
-std=C89/C99:指定语言标准
-Wall:产生尽可能多的警告
-g:生成调试信息
-I:指定头文件搜索目录
-L:指定库文件搜索目录
-O1/O2/O3:指定优化等级

变量相关概念

回顾内存RAM功能和特点

字节(Byte):计算机将内存分成一格一格,每一格用来存储一个数字,每一格对应的专业术语叫字节

地址(Address):计算机给内存中的每个字节都指定一个唯一的编号,编号从0开始,后续字节编号依次加1

存储区(Buffer):计算机将1字节或者多个连续的字节形成的一个存储单元简称存储区,又称缓冲区

首地址(Base Address):又称起始地址,存储区中第一个字节的地址用来当存储区的首地址

原则:访问内存前先分配

四、常量与变量

在程序执行过程中,其值***不发生改变***的量称为常量
直接常量(字面值)
整型量:10,10U,10L,10LL,012,0xA
实型量:0.12,0.12F,1.2E-1
字符量:‘A’,’\n’
字符串:“Hello, World !\n”
标识符
标识变量名、数组名、函数名、类型名的有效字符序列
符号常量
符号化的常量,如宏定义、枚举元素等

在程序执行过程中,其值**可以改变的量称为变量
定义变量分配内存的语法:数据类型 变量名 = 初始值;
例如:int a = 520;
变量在内存中占据一定的存储单元,其内容可变
变量在使用前,必先定义其类型,且只能定义一次
欲使变量拥有确定的值,必为其赋值
定义变量的同时赋予初值叫做初始化
变量名必须是
合法
的标识符
字母或下划线开头
包含字母、下划线和数字
不能与关键字冲突
大小写敏感

变量的四要素:
例如:int a = 10, b = 20;
名称
叫什么?
类型
是什么?

存什么?
地址
在哪里?

五、C语言的编程风格

1、单条语句可写在任意多行内
2、必要的空格令代码更加清晰
3、严格的缩进令代码层次分明
4、适度的空行划分出逻辑单元
5、统一用驼峰或者下划线命名
6、代码尽量在屏幕左侧2/3
7、右侧1/3留白

六、两个常用函数

printf (“格式字符串”, …);
格式化输出,向显示器打印输出信息
参考代码:var_printf.c

scanf (“格式字符串”, 地址表);
格式化输入,从键盘上捕获输入的数据并保存到变量中
scanf("%*c") 将缓冲区所有数据都读走,清空
在这里插入图片描述

参考代码:scanf.c

七、基本数据类型

数据类型功能:gcc预算将来分配内存大小
例如:int 分配4字节内存
int a = 520;
char 分配1字节内存
char a = 23;

12个基本数据类型如表

在这里插入图片描述

sizeof关键字

sizeof (参数);
计算内存的大小,以字节为单位
参数可以是类型、变量或表达式
不计算参数的值,只关注其类型
参考代码:sizeof.c

详解基本数据类型之字符类型

字符常量
用单引号括起来表示,例如:‘A’
底层存储的是整数,即字符的ASCII码
‘d’ - ‘a’ = 本质是100-97=3

字符变量
(signed) char/unsigned char
1字节
printf/scanf格式化占位符:%c或%hhd

ASCII编码

American Standard Code for Information Interchange,美国信息交换标准代码
1967年首次发表,1986年最后一次修订
包括128个字符,其中:
33个控制字符多数已废弃不用
95个可显示字符包括26个基本拉丁字母大小写、10个阿拉伯数字、32个标点及数学符号、1个空格
扩展版本EASCII增加了部分欧州语言字符
无法涵盖所有语言字符,逐渐被Unicode编码取代

常用控制字符

在这里插入图片描述

常用可显示字符

在这里插入图片描述

转义字符

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值