C语言从基础到进阶1

内容提要 :C语言概述 数据类型 常量

C语言概述
计算机基础

 计算机组成 计算机:能进行计算以及逻辑处理的设备

  • 硬件:组成计算机的物理部件。(内存条、CPU、硬盘..)

           开发中对于硬件的认知: 硬件包括电子设备、单片机、集成电路和嵌入式系统。

  • 软件:计算机中运行的程序和数据。

            开发中对于软件的认知: 软件分为系统软件(OS)、应用软件和编程工具(编译器)

计算机的六大部件 

  • 中央处理器(CPU):控制 + 计算
  • 内存:临时存储运行时的数据。
  • 输入设备:向计算机输入数据(键盘、鼠标、扫码枪)
  • 输出设备:将计算机数据进行输出(显示器、打印机)
  • 外存储器:永久存储数据(硬盘)
  •     网络:数据传输与通信



计算机的工作原理 

  • 存储程序:程序和数据存储在内存中
  • 程序控制:CPU按指令顺序执行

计算机的语法

  • 机器语言:二进制代码,直接控制硬件
  • 汇编语言:助记符形式,需要汇编器翻译
  • 高级语言:C/C++,Java,Python,PHP,C#,GO

C语言特点

简洁高效,支持底层硬件操作

可移植性强,适合结构化编程

生成代码质量高,执行速度快

C语言程序的开发过程(!)

开发的三个步骤

1. 编辑:编写源代码( .c 文件,程序员完成)

2. 编译:将源代码文件转换为可执行文件(编译器完成)

3. 运行:执行程序(操作系统加载)

C语言程序的编译过程

1. 预处理:处理宏和头文件以及注释等

2. 编译:生成汇编代码

3. 汇编:转换为机器码/二进制代码( .o 文件)

4. 链接:合并库文件和目标文件

#include <stdio.h>
// 定义宏
#define PI 3.14
int main(int argc,char *argv[])
{
    printf("hello world!\n");
    double area = PI * 2 * 2;
    return 0;
}

编译的命令:

一个简单的C语言程序

#include <stdio.h>
// 主函数
int main(int argc,char *argv[])
{
    printf("hello world\n");
    return 0;
}

运行结果:

程序结构分析:

  • 注释:解释代码逻辑,写给程序员自己看,预处理阶段会被删除;
  • 预处理指令:程序中包含的某一文件内容( #include );
  • 主函数: main 函数是程序唯一的入口,一个文件中最多有1个,这个函数不能被其他函数调 用,这是一个自动执行函数,系统是通过这个函数的指针进行访问的。
  • 关于函数:
    • 函数头:(函数首部或者函数说明)
      说明函数类型,函数头由函数名和函数参数构成。
    • 函数体: 包括变量说明和语句执行部分。
    • 函数调用语句:比如:printf();

数据类型:

定义:

数据类型其实就是固定大小内存的别名,并且描述了一个变量存放什么类型的数据。简单类说,就 是组织和操作数据。

数据:计算机要处理的数据(数字、字符串、文字、符号、图片、音频、视频等)

数据类型不仅帮助我们组织和操作数据,还决定了程序如何有效的利用内存。

了解数据类型的内存需求是理解计算机管理和操作数据的关键

注:程序运行需要再内存中

数据类型分类(!)

  • 基本类型(C语言内置)
  •  整型(整数)
    • 短整型:short(short int缩写)
    • 基本型:int(使用最多)
    • 长整型:long(long int缩写)
    • 长长整型:long long(long long int缩写,C99新增)
  • 浮点型(小数、实数)
    • 单精度型:float 双精度型:
    • 双精度型:double
    • 长双精度型:long double(C99新增)
  • 字符型:char
  • 构造类型(用户自己定义)
    • 结构体:struct
    • 联合体/共用体:union
    • 枚举类型:enum
  • 指针类型
  • 空类型:void(C语言内置)

数据类型在内存中大小(重点)

     注意: true 和 false 是宏定义,实际值是 1 和 0

     注意:因为C语言没有Byte这个单位,所以我们一般使用char来表示字节。因为 1char = 1byte

printf("true size:%d\n", sizeof(true));  // trus size:4   解释:true本身就是int类型的1,所以
占4个字节
printf("bool size:%d\n", sizeof(bool));  // bool size:1   解释:占1个字

总结:

① 数据类型在内存中所占的字节数跟C语言的编译系统有关。

② 计算某个数据类型所占字节数可以用sizeof运算符。

③ 布尔类型要添加 #include ,大家也可以直接使用int类型的0和1来表示布尔类型

常量:

在C语言中,数据的基本表现形式是常量和变量。不管是常量还是变量,都是需要在内存中申请一 块空间,用于数据的存放。

定义:在程序执行过程中其值不能被改变的量。

分类:int、float、double、char、符号常量(宏定义)

整型常量

整型常量可以用十进制、八进制、十六进制三种形式表示。

十进制常量:由数字 0~9 构成,没有前缀,不能以0开头。举例:

99,218      // 正确的
0           // 正确的
09          // 错误的,不能以0开头

八进制常量:由数字 0~7 构成,以 0 为前缀,不能表示小数。举例:

023,077     // 正确的
00          // 正确的
099         // 错误的,只能由数字0~7构成

十六进制常量:由数字 0~9 ,字母 a-fA~F 构成,以 0x|0X 为前缀,不能表示小数,举 例:

0xff0000    // 正确的
0X55        // 正确的
0x0         // 正确的

整型常量中的长整型数据可用 L或者l 作为后缀,举例:

long num = 123L;

整型常量的分类:

  • 有符号与无符号基本整型常量(int)
    • 有符号表示范围:负数 + 0 + 正数 无
    • 符号表示范围:0 + 正数,内存中所有负数的位置都用来表示正数,此时它的正数范围 超过有符号数正数范围。
  • 有符号与无符号长整型常量(long)
  • 有符号与无符号短整型常量(short )
     
  • 整型常量的表示
    • 十进制表示:可以使用10个数字符号0~9以及 +,- ,如:123,-90
    • 八进制表示:以0开头,可以使用7个数字符号0~7以及 +,- ,如:0123,-011
    • 十六进制表示:以0x或者0X开头,可以使用 0~9 以及 A~F(a~f) ,如:0x12,-0x12
       

浮点型常量

C语言中浮点型数就是平常所说的小数(实数),有两种表现形式:

  • 十进制小数:如:0.123, -12.6,0.123F(F代表float)
  • 指数形式(科学记数法):
    • 正数表示:如十进制小数 的指数表示法就是 ,也可以表示为 ;
    • 负数表示:如十进制小数 的指数表示法就是 ,也可以表示为 ;

注意:

① 在符号e的前面必须要有数字

② 在符号e的后面必须为整数,不能是带有小数点的实数型。

③ 实型常量的后缀用F/f表示单精度型。后缀用L/l表示双精度型。

字符型常量

       用单引号 '' 括起来的一个字符,如 'a' 'A', '4', '_' 等,比如: '刘' 就不是字符,一个汉字所 占的字节数超过1个字符。中文符号当成汉字理解。英文输入法下输入的字母、数字、符号都是单 字符。

       转义字符常量:以反斜杠 \ 开头的字符序列,表示控制以及不可见字符。如:

字符串常量

说明:在C语言中,支持字符串常量,不支持字符串变量。字符串变量需要使用字符数组或者字符 指针实现。

  • 用一对双引号 "" 括起来的一个字符序列
  • 可以使用printf输出一个字符序列

注意: 字符常量'a'与字符串常量"a"的区别:

系统自动为字符串常量加上结尾的 \0 ,使所占内存单元多一个,单字符常量的长度不变,可 用sizeof()运算符来测量。

符号常量

        说明:一般通过宏定义,在预处理的时候替换成具体的常量

        定义:一个标识符来代表一个常量。如:用PI代表圆周率π(3.1415926)

好处:

  • 增加可读性
  • 增强了可维护性

定义符号常量:

  • 用预处理指令: #define
  • 格式:#define 标识符 字符串
    • 标识符和字符串之间用空格隔开
    • 句末不用分号
    • 标识符的命名采用大写,如果有多个单词,使用下划线分隔,如:MAX_VAL MIN_VAL

范例:

#include <stdio.h>
// 定义符号常量
#define PI 3.14
#define R 20
int main(int argc,char *argv[])
{
    // 计算圆的周长 2 × PI × R
    printf("计算圆的周长:%f\n",2 * PI * R);// %f:以小数显示
    // 计算圆的面积 PI × R × R
    printf("计算圆的面积:%f\n",PI * R * R);


 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值