C语言——概述

发布于:2023-02-02 ⋅ 阅读:(570) ⋅ 点赞:(0)

C语言目录:

1. 概述

2. 数据类型

3. 量

4. 运算符

5. 流程控制

6. 函数

7. C程序编译过程

8. 文件

9. 内存管理


很多高级语言都是从C语言衍生的

  • C++、C#、Object-C、Java、Go等

很多系统软件都是由C语言编写的

  • 几乎所有的操作系统都是C编写的
  • 几乎所有的计算机底层应用软件都是C编写的
  • 几乎所有的编辑器都是C编写的

1.1 C语言发展史

F O R T R A N → A L G O L → C P L → B C P L → B → C → C + + FORTRAN\rightarrow ALGOL\rightarrow CPL \rightarrow BCPL\rightarrow B\rightarrow C\rightarrow C++ FORTRANALGOLCPLBCPLBCC++

BCPL与B语言:精炼、接近硬件,但过于简单,无数据类型

  • 1970 年美国贝尔实验室 Ken Tompson 以BCPL为基础,设计出了很简单而且很接近硬件的B语言,并用B语言写出了第一个UNIX操作系统。但B语言过于简单,功能有限
  • 1972 年至1973 年期间,贝尔实验室 Dennis Ritchie 在B语言的基础上设计出了C语言。C语言保持B语言的精炼与接近硬件的特性,又克服了他们的缺点

1.2 C语言标准

  • 1989年C语言标准被批准,这个版本的C语言标准通常被称为ANSI C(C89)
  • 1999年,国际标准化组织ISO又对C语言标准进行修订,在基本保留原C语言特征的基础上,针对应该的需要,增加了一些功能,命名为C99
  • 2011年12月,ANSI采纳了ISO/IEC 9899:2011标准。这个标准通常即C11,它是C程序语言的现行标准

1.3 优点

  • 简洁性:核心内容少,只有 32 个关键字,9 种控制语句、44 种运算符

    条件语句:if…else,switch
    循环语句:while,for,do…while
    break,continue,return,goto

  • 丰富的数据类型

  • 具有低级语言的特点:与汇编语相近的功能和描述方法,如地址运算和二进制数位

    可以对硬件端口进行直接操作

  • 结构化语言,适用于大型程序模块化设计

  • 代码效率高

  • 语法限制不严,程序设计自由度大

  • 可移植性好

1.4 算法

通过有限步骤,明确的操作产生问题答案

算法表示
自然语言,传统流程图,N-S流程图,伪代码

常用算法:枚举,递推,递归

1.5 数据在计算机中的表示

1.5.1 进制转换

进制

计数的方式,数值的表示方式

十进制 0、1、2、3、4、5、6、7、8、9 逢十进一

二进制 0、1 逢二进一

  • 书写格式:0b101

八进制 0、1、2、3、4、5、6、7 逢八进一

  • 书写格式:061

十六进制 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 逢十六进一

  • 书写格式:0x45

转二进制

整数部分:除基取余,从下至上

小数部分:乘积取整,从上至下

1.5.2 数据编码

计算机只能识别0和1的形式存储的

数据在计算机内部是以 补码 的形式存储,所有的运算都是以补码存储

  • 正数的原码、反码和补码都是它的二进制

  • 负数的原码, 是将该负数的二进制最高位变为1

    负数的反码, 是将该数的原码 除了符号位 以外的 其它位取反

    负数的补码, 就是它的反码 + 1

码制的由来

原码的减法不正确,所以引入反码。但反码相同的数相减,得到 -0。但前面的符号没有任何意义,所以引入补码。

1.6 C语言程序组成

一个C语言程序由多个函数组成,每个函数有自己的功能

一个程序有且仅有一个主函数

  • 如果一个程序没有主函数,则这个函数不具备运行能力

  • 程序运行时系统会自动调用主函数,而其他函数需要开发手动调用

1.6.1 主函数

a. 写法

int main(){
    //other code...
     return 0;
}
  • 主函数前的int可以不写或者换成 void

  • main函数中的 return 0 可以不写

多种写法产生原因

  • C语言最早的时候只是一种规范和标准(如C89,C11)

  • 标准的推行需要各大厂商的支持和实施,由于各大厂商的各自实施,导致实施的标准不同

b. 执行结果

如果main函数的执行正常, 那么就返回0

  • main() 默认返回0,可以不写

如果main函数执行不正常, 那么就返回一个非0的数

c. 主函数参数

main(int argc,const char * argv[]) 参数列表含义

  • int argc 系统在启动程序时传递给 argv 的值的个数
  • const char* argv[] 系统在启动程序时传入的值,默认情况下只会传入一个值——main() 函数执行文件的路径

可以通过 命令行 或者 项目设置 给 main() 传入其他参数

# include<stdio.h>

main(int argc,char* argv[]){
    printf("argc = %d\n",argc);
    printf("argv[0]=%s\n",argv[0]);
    printf("argv[1]=%s\n",argv[1]);
    getchar();
}

在这里插入图片描述

1.6.2 注释

注释可以用来解释某一段程序或者某一行代码是什么意思,方便程序员之间的交流沟通

a. 注释分类

单行注释

// 被注释内容

  • 使用范围:任何地方

  • 作用范围: 从第二个斜线到这一行末尾

  • 快捷键:Ctrl+/

多行注释

/* 被注释内容 \*/

  • 使用范围:任何地方

  • 作用范围: 从第一个 /* 到最近的一个 */

c. 注意

单行注释可以嵌套单行注释、多行注释

// aa // vvvvvv
// /* asdasd */

多行注释可以嵌套单行注释

/*
	// asdasd
 */

多行注释 不能 嵌套多行注释

/* 
哈哈哈
     /*嘻嘻嘻*/
 呵呵呵 
*/

1.6.3 关键字

C语言中具有特殊含义的单词

a. 特点

  1. 全部小写

  2. 不可用作变量名、函数名等

  3. C语言一共有32个关键字

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

b. 分类

基本数据类型关键字

char:字符类型变量

int:整型变量

float:浮点类型变量(单精度)

double:浮点类型变量(双精度)

enum:枚举声明

类型修饰符

short:修饰 int ,表示短整型

long:修饰 int ,表示长整型

signed:修饰 int ,声明为有符号数据类型

unsigned:修饰 int ,声明为无符号整数类型

结构类型关键字

struct:结构体声明

union:共用体声明

流程控制关键字

分支结构

if :条件语句

else :条件语句的否定分支

switch:开关语句

case:开关语句的分支标记

default:开关语句中的其他分支


循环语句

for:循环语句

while:循环语句

do...while:循环语句


跳转语句

continue:跳过语句

break:跳出语句

goto:无条件跳转

return:返回语句,用于返回特定值


存储类型关键字

auto:指定为自动变量

register:指定为寄存器变量

static:指定为静态存储类型

extern:指定对应变量为外部存储类型

const:指定变量为只读变量

volatile:指定变量为易变变量


特殊用途关键字

sizeof:计算数据长度

typeof:声明类型别名

void:空类型

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到