IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 初识C语言(一) -> 正文阅读

[嵌入式]初识C语言(一)

目录

?1、 什么是C语言?

2、第一个C语言程序

3、数据类型

4、数据类型的使用

5、为什么会出现这么多类型,每种类型的大小是多少?

6、常量与变量

?7、总结


?1、 什么是C语言?

?1.在了解什么是C语言之前我们先来了解一下什么是语言:
?????? (1) 人与人交流有:中文、英文等许多语言!
?????? (2) 人与计算机交流:我们使用计算机语言,计算机语言也有很多种(比如C/C++/JAVA/Python……等许多语言)。
??????? 简单来说,C语言就是一种常见的人与计算机之间交流的语言!


  • 这里细说一下C语言(也可以直接忽略这一段):

??????? C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易 的方式编译、处理低级存储器、产 生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的 C语言程序可在许多电脑平台上进 行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制 定了一套完整的美国国家标准语 法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和 国际电工委员会(IEC)发布的C11 标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字 标识符,一定程度上实现了汉 字编程。C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。


2.这里可能会有人问道,为什么计算机会有那么多语言?
?????? 因为一种语言设计出来肯定会有一定的缺陷,有缺陷就要用一门新的语言来解决这个缺陷,所以就会产生很多种计算机语言。每一门语言有它的优点也有它的缺点,任何一门语言都不会是最完美的!


3.C语言标准:

(1)C语言的形成:

??? ?? 计算机只能识别二进制,所以早期写代码写的都是二进制序列(100100100),当某一功能的二进制序列不清晰的时候可能还要去查二进制序列手册(早期写二进制序列的人都是计算机科学家),因为写二进制序列太麻烦了,就有科学家想到了使用助记符来表示某一功能的二进制序列。有了助记符由此就产生了汇编语言,后来在汇编语言的基础上就发明了B语言,在B语言的基础上又发明了C语言

补充:像二进制序列、汇编语言这种属于低级语言(这里的低级指的是使用起来比较困难),C语言我们就称为是一种高级语言

(2)C语言标准的形成:

??????? C语言出现了以后得到了各个厂商的追捧,但是C语言刚出来的时候还不够完整,这个时候各个厂商就可能会对C语言进行定制。每个厂定制的C语言可能不一样,由此就形成了差异。这个时候C语言就出现了国际标准(ANSI C)。最早期的标准是用C语言之父的名字命名的:K&R标准,在这之后就有了C89(89年制定的标准)/C90(90年制定的标准)/C99(99年制定的标准)……C11/C17等很多标准。

现在主流的标准还是C89/C90,C99之后使用的就比较少了!

4.C语言写完以后会有一个.C文件与.H文件,那么这些文件时怎样运行起来的呢?

????? 这些文件其实是通过编译器生成.exe文件(可执行程序)!

5.C语言编译器:Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
补充:平时使用的像VS2019这种其实是一个集成开发环境,这里面有编辑器、编译器、链接器、调试器。


2、第一个C语言程序

1.输出:hello world

//写第一个C语言代码
//hello world
#include <stdio.h>
int main()
{
	printf("hello world\n");
	return 0;
}

运行结果:

?2.main函数

?????? 写C语言代码,首先要知道main函数。main函数是程序入口,程序是从main函数的第一行开始执行,main函数在一个源文件中有且仅有一个,一个源文件中如果不写main函数或写了多个main函数程序就会报错。

?3.main函数书写格式:

//main函数的书写方式:
//这种写法是C99中要求的书写格式
int main()
{

	return 0;
}

(1)int main()中 int 表示整型,main函数运行结束后返回一个整型的值。

(2)return 0;这里的0就是一个整数,在main函数结束的时候被返回。

(3)有些人可能在一些资料中看到过main函数的其他书写格式:

//C99之前main函数就是这样写的,现在没有人这样写了
//如果在某本书上看到了这样书写格式,那这本书大概率就是出版年份比较久了
void main()
{

}

4.C语言中的打印(输出)函数:printf

#include <stdio.h> //头文件的包含
int main()
{
	//打印hello world
	//打印函数:printf
	//printf 是一个库函数,库函数的使用要包含一个头文件stdio.h
	printf("hello world\n");
	return 0;
}

3、数据类型

1.为什么会有数据类型?

????????? 在我们的生活中有很多地方要用到数据类型,比如一个人的年龄一般都会是18岁、20等等(18、20就是一个整型),比如一个人的身高是181.3cm(181.3就是一个小数,是一个浮点型),比如一个人的姓名是张三(张三就是一个字符串类型)。

??????? 计算机语言要描述我们现实世界那它就要有能力去描述,这个时候C语言就提供了一些数据类型,这些数据类型规定好了以后计算机就可以描述我们现实世界中各种各样的类型。

2.C语言提供的数据类型:

整型:

char ------------>字符数据类型

short ----------->短整型? (short写全是short int)

int -------------->整形

long ----------->长整型? (long写全是long int)

long long ---->更长的整形

浮点型:

float ----------->单精度浮点数

double -------->双精度浮点数? (double的精度比float的精度更高)


4、数据类型的使用

#include<stdio.h>
int main()
{
	//描述一个人的年龄:
	int age = 20;//使用int这种整型类型创建了一个变量叫age,并且赋值为20

	//描述pai
	//3.14后面的f表示它是一个float类型的数据,如果不写f则默认为double类型(F大小写都可以)
	float pai = 3.14f;
	return 0;
}

5、为什么会出现这么多类型,每种类型的大小是多少?

#include<stdio.h>
int main()
{
	int age = 20;//age这个变量的创建其实是要在内存中开辟空间的
	return 0;
}
  • 这个可以理解为将一本书放到一个书架上,一本书就会占用这个书架的一块空间。每本书的厚度都是不同的,薄一点的书占的位置小一些,厚一点的书占的位置大一些。
  • 计算机中存储数据也是一样的,每创建一个变量就需要开辟一块空间。如果这个数据小了计算机就会为这个数据分配小一点的空间,如果这个数据大了计算机就会为这个数据分配大一点的空间。
#include<stdio.h>
int main()
{
	int age = 20;//age这个变量的创建其实是要在内存中开辟空间的
	printf("hello world\n");//打印字符串
	printf("%d\n",100);//打印十进制数->100
	//%d 是指以十进制的形式打印一个整数
	printf("%d\n", age);//20
	return 0;
}

运行结果:

  • 计算每种类型所占空间的大小可以使用C语言提供的sizeof关键字(sizeof是一个运算符):?
#include<stdio.h>
int main()
{
//关键字:sizeof C语言中的sizeof是用来就是变量或者使用类型创建变量的大小,单位是字节
    printf("%d\n", sizeof(char));
    printf("%d\n", sizeof(short));
    printf("%d\n", sizeof(int));
    printf("%d\n", sizeof(long));
    printf("%d\n", sizeof(long long));
    printf("%d\n", sizeof(float));
    printf("%d\n", sizeof(double));
    printf("%d\n", sizeof(long double));
	return 0;
}

运行结果:

  • ?sizeof计算结果的单位是字节-->byte
  • ?计算机中的单位:

????????? 计算机只能识别二进制数

????????? 二进制:0~1;八进制:0~7;十进制:0~9

???? ? ? 计算机中存放一个二进制的时候只需要一个小的格子就可了,这个小格子就相当于一个bit位;

???????? 1 byte? = 8 bit ; 1 kb = 1024 byte;1mb = 1024kb;1gb = 1024mb;1tb = 1024gb ;……

之所以有这么多类型是为在我们定义一个变量的时候可以选择一个合适的类型存放数据,这样就可以提高内存的利用率同时也是为了更加丰富的表达生活中的各种值。

补充:C语言规定sizeof(long) >=sizeof(int),所以long所占内存的大小与int一样都是4个字节


6、常量与变量

生活中的有些值是不变的(比如:性别,身份证号码,血型等等);

有些值是可变的(比如:年龄,体重,薪资)。

C语言中为了描述变化的值,使用变量;描述不变的值,使用常量。

1.定义变量:

#include<stdio.h>
int main()
{
	char ch = 'a';//字符使用单引号引起来
	//'b'  'z'  't'
	float weight;
	double pai;
	//变量的定义方式:类型  变量名;
	return 0;
}
  • 变量在创建的时候,不初始化是一种不好的代码风格。有些编译器会报错。

  • 建议一般在定义变量的时候要进行初始化
#include<stdio.h>
int main()
{
	//变量的定义方式:类型  变量名;
	//当一个局部变量不初始化的时候,它的值是随机的
	int age=0;
	printf("age=%d\n", age);
	return 0;
}

运行结果:

2.变量的分类 :局部变量与全局变量

#include<stdio.h>
//{}就是一个代码块
//在代码块内部定义的变量就是局部变量
//在代码块外部定义的变量就是全局变量
int a = 100;//全局变量
int main()
{
	int a = 10;//局部变量
	//局部变量与全局变量名字形同是,局部优先
	printf("%d\n", a);
	return 0;
}

运行结果:

局部变量与全局变量命名相同时:优先使用局部变量;一般不建议将局部变量与全局变量的名字设置成相同的。


?7、总结

????????????? 初识C语言,走进计算机语言的世界。

????????????? 若有写的不准确的地方恳请大佬指正!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章           查看所有文章
加:2021-10-18 17:33:13  更:2021-10-18 17:35:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:52:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码