C语言——概述

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个关键字

12345678
charshortintlongfloatdoubleifelse
returndowhileforswitchcasebreakcontinue
defaultgotosizeofautoregisterstaticexternunsigned
signedtypedefstructenumunionvoidconstvolatile
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:空类型

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AmosTian

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

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

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

打赏作者

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

抵扣说明:

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

余额充值