自学内容网 自学内容网

C语言基础01

预备知识

计算机的组成

计算机组成
  • 计算机:能进行计算和逻辑的设备

  • 硬件:组成计算机的各种物理部件

    硬件 = 电子设备 + 单片机编程(单片机,微控制器)+ 集成电路(原理图PCB设计)+嵌入式系统

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

    软件 = 系统软件(linux系统)+ 应用软件 + 编程语言(C/C++)+ 算法与数据结构

计算机的六大部件
  • 中央处理器(CPU)
  • 内存
  • 输入设备
  • 输出设备
  • 外存储器
  • 网络
计算机的工作原理
  • 存储程序
  • 程序控制

计算机语言

  • 机器语言:二进制0和1构成
  • 汇编语言:充当翻译
  • 高级语言:C/C++、Java、Python、PHP、C#

C语言的简史与特点

嵌入式开发就是针对Linux系统的开发,而Linux系统是使用C语言开发的,所以我们从事嵌入式开发要使用C语言

C语言的特点

  • C语言是一种强大而灵活的语言,可以用来编写任意复杂的程序
  • C语言简洁、紧凑、使用方便
  • C语言是可移植的
  • C语言很适合结构化程序设计,因而要求用户以功能模块的方式来思考问题
  • C语言可直接控制硬件(位运算符,地址)
  • 生成目标代码质量高,程序执行效率高,运行速度快

C语言程序开发过程

开发三步骤

一般发成三个步骤:

  • 编辑:程序员向.c文件写入程序
  • 编译:将源文件(.c)编译成可执行程序(二进制)
  • 运行:运行可执行程序

在这里插入图片描述

C语言程序的编译过程

编译过程分为四个步骤:

  • 预处理
  • 编译
  • 汇编
  • 链接

在这里插入图片描述

C语言程序的基本结构

一个简单的C语言程序

功能:

程序结构分析:

  • 注释:

    • 代码中起到解释说明的文字(提高代码的可读性),或者对代码进行屏蔽,系统不会被执行
  • 预处理命令:

    • 程序中包含的某一文件内容
  • 主函数:

    • C程序的入口函数,一个C文件有且仅有一个主函数(main函数)
  • 函数首部(函数头)/函数说明

    • 说明函数类型,函数名和函数参数,举例:int main()
  • 函数体:

    • 包括变量说明和语句执行部分,举例:{..}
  • 函数的调用语句:

    • 比如格式输出函数:printf(),输出“hello world!”

C语言编码规范要求

C语言在编码的时候,需要遵循如下规范:

  • 常用缩进书写格式(一般缩进2~4个字符)
  • 有足够的注释(添加必要的注释,使代码更好理解)
  • 有合适的空行(一般预处理命令和函数、全局变量和函数、函数和函数之间,使得代码结构更清晰)
  • {}对齐(C和C++中{}都需独占一行)
  • 函数体内采用分层缩进和模块化的书写方式
  • 不把多条语句写在程序的同一行上
  • 例如:
int a = 10; int b = 20; int c = 30;
printf();printf();
  • 命名:变量或者函数命名要尽可能包含更多含义,但不能太长

C语言程序设计的特点

C语言程序在设计的时候,需要注意以下细节:

  • 以C程序由一个或多个函数组成,但有且仅有一个主函数(main函数);main函数是程序执行的入口,可置于任意位置
  • 程序中可以有预处理命令(如:#include命令)预处理命令通常在程序的最前面
  • 每个语句以分号结尾;预处理命令函数头花括号之后不能加分号
  • 函数体由一对花括号{}括起来
  • 包含在/…/内的文本叫做注释
  • 一行可以写几个语句,一个语句也可以写在多行上
  • 程序区分大小写字母。一般变量、语句等用小写字母书写;符号常量、宏名等用大写字母书写
  • 标识符和保留字之间必须加空格分隔,如: int age

C语言中的注释

在C语言中,注释一般分为两类,单行注释多行注释

注释的作用:给代码添加解释说明性文字,提升代码的可读性,注释本身是不会被执行的。同时也可以使用注释屏蔽掉代码

单行注释

说明:单行注释使用双斜杠//表示。我们一般用于常量、变量、函数调用等的定义

语法:

//单行注释

示例:

//预处理指令,引入标准的输入输出库
#include <stdio.h>

int main()
{
    //打印信息到控制台
    printf("")
}

多行注释

说明:多行注释使用/ * * /表示,他可以占用多行代码,但不能嵌套,我,我们一般用于函数、文件头说明

语法:

/*
要注释
的代码
*/

示例:

  •   //预处理指令,引入系统的标准输入输出库
      #include <stdio.h>
      /*
      主函数
      */
      
      int main()
      {
          //打印信息到控制台
          printf("hello world!")
      }
    

注意:由多行注释衍生出一种更细致的注释,我们称之为文档注释

//预处理指令,引入系统的标准输入输出库
#include <stdio.h>
/*
*主函数
*@author 开发者
*@param 
*/

int main()
{
    //打印信息到控制台
    printf("hello world!")
}

数据类型

定义

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

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

  • 数据类型不仅帮助我们组织和操作数据,还决定了程序如何有效的利用内存
  • 了解数据类型的内存需求是理解计算机管理和操作数据的关键

小贴士:

简单来讲,程序的运行需要用到内存

内存存储容量单位

字节(Byte):计算机存储容量的一种单位,一般应用层最小存储单元的表示

比特位(bit):二进制数(0和1)计算机是以二进制的方式进行存储的,我们应用层可以通过位运算进行位的操作

1个字节(Byte) = 8位(bit)

1个千字节(KB) = 1024字节

1MB = 1024KB

1GB = 1024MB

1TG = 1024 GB

数据类型分类和计算方法

在这里插入图片描述

数据类型在内存中的大小
序号数据类型中文说明大小(字节)
short短整型2
int基本整形4
long(long int)长整型4(32位编译器)/8(64位编译器)
long long(long long int)长长整形8
float单精度浮点型4
double双精度8
char字符型1
bool(Bool)布尔型,真-true 假-false1

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

注意:

获取某个数据类型或者变量所占的字节数→sizeof(某个数据类型或者变量名 )

总结;

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

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

③布尔类型要添加#include <stdbool.h>,打家也可以使用int类型的0表示假,非0表示真

printf("true size:%d\n",sizeof(true);//占4个字节
课堂练习

校验各个数据类型在内存中的大小

常量与变量

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

常量

  • 定义:在程序执行过程中,其值不能被改变的量
  • 分类:int、float、double、char和符号常量
整型常量(int)
  • 整型常量可用十进制、八进制、十六进制表示
    • 十进制整形常量:由0~9的数字组成,没有前缀,不能以0开头(比如:06)
    • 八进制整形常量:以0为前缀,其后由0~7的数字组成,没有小数部分(比如:023)
    • 十六进制整型常量:以0x或者0X为前缀,其后由0~9的数字和A~F字母组成,没有小数部分(比如:0x00ff00)

​ 整型常量中的长整型数据可用L作为后缀(比如;123L

  • 整型常量的分类

    • 有符号与无符号基本整型常量
    • 有符号与无符号长整形常量
    • 有符号与无符号短整形常量
  • 整型常量的表示

    • 十进制表示:可以使用10个数字符号0~9以及+、-
    • 八进制表示:以0开头,可以使用7个数字符号0~7,如:0123,-011
    • 十六进制:以0x开头,符号有0~9A~F
浮点型常量

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

  • 十进制小数形式:如:0.123,-17.8
  • 指数形式(科学计数法),如:1230.0可以表示为1.23e3

注意:

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

​ ②在符号e的后面必须为整数,不能是带有小数点的实数型。实型常量的后缀用F或(f)表示单精度型。后缀用L或l表示双精度型

字符常量

用单引号‘’括起来的一个字符,如:‘a’,‘A’, ‘__’等,比如:‘霍’就不是字符,一个汉字所占的字节数超过了1个。中文符号当作汉字理解

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

序号字符形式含义ASCII码
\n换行10
\r回车13
\0空字符0
\t水平制表符9
字符串常量

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

  • 用一段双引号“字符串常量值”括起来的一个字符序列
  • 可以输出一个字符序列,如:printf(“hello world!\n”);

注意:

字符串常量“a”与字符常量‘a’的区别:
在这里插入图片描述
系统自动为字符串常量加上结尾的“\0”,使所占内存单元多一个,但字符常量的长度不变,可用sizeof()运算符来测量

符号常量

定义一个标识符来代表一个常量

  • 如:用PI代表圆周率Π

好处

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

定义符号常量

  • 用编译预处理命令#define(宏定义)

格式:

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

案例:

在程序中使用符号常量

说明:

  • 程序中用#define PRICE 30 定义了符号常量PRICE的值为30,此后程序中出现的PRICE都用30替代
  • 符号常量不占内存单元
  • 此后在本函数中不允许改变PRICE的值,也不允许再为其赋新的值
  • 使用符号常量的好处:
    • 含义清楚
    • 一改全改

原文地址:https://blog.csdn.net/jxcklfn/article/details/144033283

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!