C语言简介

简介

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译

C语言的特点

HelloWord

#include <stdio.h>
int main() {
    printf("HelloWord");
    return 0;
}

代码描述

1. 引入操作系统下的系统目录下的库函数
2. 创建只运行的main函数,返回值建议使用int,但也可以使用void
3. {} : 代码块,内部可以有多条语句
4. 所有的可执行语句都必须在代码块中
5. printf : 字符串输出函数
6. 使用int需要返回整数类型的数字,return就是将数字返回的关键字,使用void则无需写语句
7. 每句可执行代码都必须以;结尾
8. ;前没有语句叫做空语句,在C语言中是合法的
9. C语言的扩展名是.c,C++的扩展名是.cpp
10.不同平台的C语言库函数只能保证调用语法一样,但不能保证执行结果也一样

include

头文件包含,使用C语言库函数需要提前包含库函数对应的头文件
有两种写法:
    #include <文件名>     文件在系统目录下需要使用<>
    #include ""          文件在当前目录下需要使用""

stdio.h

该文件在操作系统的系统目录下,printf是该文件提供的函数

printf

C语言库函数,向标准输出设备输出一个字符串

stdlib.h

该文件在操作系统的系统目录下,system是该文件提供的函数

system

主要功能是通过程序执行另外一个程序,该语句会返回一个整数,该整数就是被调用程序中main函数的return值
system函数在Windows中是一个基于控制台的函数,所以即使是在图形界面下调用system也会出现控制台窗口

Windows.h

该文件在操作系统的系统目录下,system和WinExec是该文件提供的函数

system

主要功能是通过程序执行另外一个程序,该语句会返回一个整数,该整数就是被调用程序中main函数的return值
system函数在Windows中是一个基于控制台的函数,所以即使是在图形界面下调用system也会出现控制台窗口

WinExec

主要功能是通过程序执行另外一个程序,该语句会返回一个整数,该整数就是被调用程序中main函数的return值
需要进行传值,: WinExec("control", SW_NORMAL)  /* 打开控制面板 */
函数
SW_HIDE             隐藏
SW_MAXIMIZE         最大化
SW_MINIMIZE         最小化,并把Z order顺序在此窗口之后(即窗口下一层)的窗口激活
SW_RESTORE          激活窗口并还原为初始化大小 SW_SHOW 以当前大小和状态激活窗口
SW_NORMAL           同SW_SHOWNORMAL
SW_SHOWDEFAULT      以默认方式运行
SW_SHOWMAXIMIZED    激活窗口并最大化
SW_SHOWMINIMIZED    激活窗口并最小化
SW_SHOWMINNOACTIVE  最小化但不改变当前激活的窗口
SW_SHOWNA           以当前状态显示窗口但不改变当前激活的窗口
SW_SHOWNOACTIVATE   以初始化大小显示窗口但不改变当前激活的窗口
SW_SHOWNORMAL       激活并显示窗口,如果是最大()化,窗口将会还原。第一次运行程序 时应该使用这个值

main函数

又叫主函数,是C语言程序的入口,程序是从main函数开始执行的,一个C语言程序必须且只能有一个main函数

return

代表函数执行完毕,返回return代表函数的终止

返回数据类型

int main() {
    return 0;
}
当返回的数据类型为int,需要返回一个整数
在main函数中,return 0代表程序执行成功,return -1代表程序执行失败
void main() {
    return;
}
当使用void,表示不需要返回数据
建议使用main函数时,要将返回的数据类型定义为int,因为C++只接受这种定义方式

注释

被指定的字符包裹,在编译器进行代码编译时,会被自动忽略;其主要作用是在代码中加一些说明和解释,有利于代码的阅读

行注释

// 注释信息     单行注释,只能将所在行的信息进行注释,是借鉴C++语言而来的

块注释

/* 注释信息 */  多行注释,能够将被包含的信息注释,是C语言标准的注释方法

变量定义

数据类型 变量名;           定义变量,: int a; 变量名可以随意命名
extern 数据类型 变量名;    声明变量,: extern int a; 变量名可以随意命名

POSIX

POSIX是一个标准,符合该标准的函数,在不同的系统下执行的结果就可以一致
Unix和Linux很多库函数都支持POSIX标准,但Windows支持的比较差
尽量使用符合POSIX标准的库函数

C语言编译过程

1. 预编译      将#include包含的头文件做简单的文本替换,并会将代码中的注释去掉
    gcc -E
    gcc -o 预编译后的文件.c -E 预编译的文件.c
2. 编译       将文本的C语言编译为二进制的指令
    gcc -o 编译后的文件.o -c 预编译后的文件.c
3. 链接       C语言写的程序需要依赖各种库,所以编译后还需要把库链接到最终的可执行程序中去
    gcc -o 链接后的文件 编译后的文件.o

C语言编译过程

操作系统结构

用户模式

在用户模式下运行的软件不能访问内核模式的内存
用户模式下每个程序都不能访问其他程序的内存

内核模式

操作系统本身,设备驱动等软件是在内核模式下运行的

32位系统与64位系统的区别

CPU内部结构与寄存器

寄存器是CPU内部最基本的存储单元
CPU对外是通过总线和外部设备交互的,总线的宽度是8,CPU的寄存器也是8位的话,该CPU就是8位CPU
有种CPU内部的寄存器是8,但总线是4,那该CPU就是准8位CPU
所有的64位CPU兼容32位的指令,32位会兼容16位的指令;故CPU只向下兼容
在64位的CPU架构上运行了64位的软件操作系统,那该系统就是64位操作系统;若在该架构上运行了32位的软件操作系统,则该系统就是32位操作系统
一个CPU的一个寄存器可以放8个二进制位,那该CPU就是8位的CPU;若一个寄存器可以放16个二进制位,则该CPU就是16位的CPU
32位CPU管理内存的最大值是4G

RISC与CISC CPU架构

RISC精简指令集
CISC复杂指令集

SPARC,X86与ARM

SPARC,ARM属于精简指令集
X86典型复杂指令

寄存器

X86构架8位CPU16位CPU32位CPU64位CPU
aax, al, aheaxrax
bbx, bl, bhebxrbx
ccxecxrcx
ddxedxrdx

C语言与汇编赋值写法

int a, b, c;
C语言赋值写法:
a = 1,
b = 2,
c = a + b;
汇编语言赋值写法:
__asm {
    mov a, 1 /* 将1放到a中 */
    mov b, 2 /* 将2放到b中 */
    mov eax, a /* 将a放到eax寄存器中 */
    add eax, b /* 将b的值与eax寄存器中的值相加再赋值到寄存器中 */
    mov c, eax /* 将eax寄存器中的值放到c中 */
}

C语言关键字

32个关键字

auto		break		case		char		const		continue	default		do
double		else		enum		extern		float		for			goto		if
int			long		register	return		short		signed		sizeof		static
struct		switch		typedef		unsigned	union		void		volatile	while

C语言控制语句

9种控制语句

if()...else...
for()...
while()...
do...while()
continue
break
switch
goto
return

C语言运算符

34种运算符

算数运算符: 		+ - * / % ++ --
关系运算符: 		< <= == > >= !=
逻辑运算符: 		! && ||
位运算符:   		<< >> ~ | ^ &
赋值运算符: 		= 及其扩展
条件运算符: 		?:
逗号运算符: 		,
指针运算符: 		* &
求字节数:   	 	sizeof
强制类型转换: 	(类型)
分量运算符:		->
下标运算符:		[]
其他:			() -

名称定义要求

可以使用大小写字母,下划线,数字命名,但第一个字母必须是字母或下划线
字母区分大小写

编译异常描述

warning 不影响编译,只是警告
error   编译器彻底罢工

C语言的特点

优点:简洁、紧凑,使用方便、灵活,功能强大,执行效率高,表达力强,移植性好;仅有32个关键字,9种控制语句,就能完成无数的功能
缺点:字符串处理方面不如Perl语言,数值计算方面不如Fortran语言,人工智能方面不如Lisp语言

C语言的特点

适用领域

1.可以用于网站后台程序的制作
2.可以用于GUI界面的制作
3.可以针对某个主题写出功能强大的程序库,供其他程序适用,从而节省其他程序的开发时间
4.可以用于大型游戏引擎的制作
5.可以编写新的语言:Unix,Linux,Windows,Java,C++,C#,.NET等底层实现都靠C语言
6.可以写操作系统和驱动程序,并且只能用C语言编写,:Linux操作系统
7.任何设备只要配备了微处理器,就都支持C语言,:微波炉、手机等等

发展趋势

1.云计算
2.物联网
3.移动互联网
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邪丶魔狱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值