首页
学习
活动
专区
工具
TVP
发布

C语言入门这一篇就够了-学习笔记

按照之前的计划,这篇文章本该写C语言简介,包括一些历史背景,发展状况, 语言特点什么的,这些东西着实比较啰嗦。

吃饭用的筷子,到现在我都不知道它的由来,不知道它是在什么历史背景下诞生的

有些东西还是有必要了解一下,比如,C语言所产生的代码运行速度比汇编语言编写的代码运行速度稍慢一点,但还是有得一拼,同时C语言要比汇编语言编写的代码可读性高,可移植性好。另外,相对于其他高级语言,比如C++、java、C#等来说,C语言编写的代码运行效率要高。

在介绍C语言的数据类型和基本语法之前,先说说C程序结构和C文件结构。

预处理指令;

变量、函数、语句、表达式、注释等;

返回值;

以一段简单的打印输出“hello world”代码为例:

注意:一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数)和若干个其他函数结合而成,或仅由一个main()函数构成;

接下来看看C语言程序运行结构:基本的三种程序结构为顺序结构、选择结构和循环结构。

顺序结构:程序按顺序执行,不发生跳转。

选择结构:依据是否满足条件,执行相应功能。(1)if(表达式) 语句;(2)if(表达式)语句1;else语句2;(3)if(表达式1)语句1;else if(表达式2)语句2;...else语句n;

注意:第三种方式,即: if......else if..........else if.....else,只能响应一个条件。

循环结构:

while ( ) { } 语句 先判断表达式后执行.

do{ }-while( ) 语句 先执行语句后判断表达式.

for( ; ; ){ }

2、C文件结构:

一个基于C的软件系统一般由以下文件构成:

若干个C文件:每个C文件中包含若干个函数。

若干个头文件:每个头文件中包含一些数据结构的定义以及C函数、变量的原型声明。

若干个库文件:库文件是编译后的二进制文件,一般由若干C文件编译后组成,其中包含了若干个函数的可执行代码;这些库文件中的函数可执行代码在连接的时候合并到最终的可执行文件中。

若干个make文件:make文件描述了多个文件中的依赖关系以及生成最终可执行文件或库文件所需要的信息。

由于篇幅较小,再加点内容,顺便写写C语言的关键字和控制语句。

1、关键字:

这里介绍下C语言的32个关键字(至于ISO推出的C99标准新增的5个C语言关键字和C11标准新增了7个C语言关键字目前没有做过过多了解,这里就不再介绍)

(1)数据类型关键字(12个)

char,short,int,long,float,double,unsigned,signed,void,struct,union,enum;

char:字符型类型数据

short:短整型数据,修饰int,一般省略被修饰的int;// short int a = 10;一般写成 int a = 10;

int:整型数据,通常为编译器指定的机器字长;

long:长整型数据,修饰int,一般省略被修饰的int;

float:单精度浮点型数据;

double:双精度浮点型数据;

unsigned, signed是修饰符,分别表示无符号和有符号,我们时常写的“ int a=123;”其实就是“signed int a = 123;”,表示有符号整型

void: 声明函数无返回值或无参数,修饰指针时表示无类型指针,void不可用来定义变量,但可以用它来修饰各种变量;

struct:用来声明结构体;

union:用来声明共用体或者叫联合体;

enum:用于枚举类型的声明;

关于结构体,共用体,枚举的用法以及结构体和共用体的区别以后单独再写;(2)控制语句关键字(12个)

if,else,for,do,while,break,case,continue,default,return,switch,goto(尽量别使用);

(3)存储类关键字(4个)

auto,extern,register,static

auto:声明自动变量(很少使用);

extern:声明变量外部可用,可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,可以外部使用;

static:声明静态变量,static修饰的变量存储在静态变量区,修饰全局变量时,表示该变量为全局静态变量,作用域为当前文件;修饰函数时表示函数作用域为当前文件内部; 修饰局部变量时,表示该变量为静态局部变量,只被初始化一次,赋值之后值会保持最新的值,也就是说局部静态变量的生命周期被扩展到整个程序运行的时间段内。这里不知道有没有说清楚,干脆看个例子简单明了:

register:声明寄存器变量,修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。

注:register变量必须是能被CPU所接受的类型,这通常意味着register变量必须是一个单个的值,并且长度应该小于或者等于整型的长度。不过,有些机器的寄存器也能存放浮点数。因为register变量可能不存放在内存中,所以不能用“&”来获取register修饰变量的地址,如:

(4)其他关键字(4个)

const,sizeof,typedef,volatile

const:const修饰变量,表示被修饰的变量不可被当前线程或进程改变;例如:const int *p = 100; //const修饰int *,表示*p的值不可变*p = 50; //错误,*p的值不可变再比如:int a = 0;int b = 0;int * const p = &a;//const修饰指针p,表示指针变量地址不可变;p = &b; //错误,地址不可变,不能指向其他地址;

sizeof:计算数据类型长度或者变量占内存空间大小,sizeof长得像函数,其实它是个关键字;

typedef:为某种数据类型定义一个新的名字;

volatile:确保本条指令不会因编译器的优化而省略,且要求每次直接读值,简单地说就是防止编译器对代码进行优化。比如如下程序:num=0x65;num =0x66;num =0x67;num =0x68;对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器就不能像对待纯粹的程序那样对上述四条语句进行优化,只认为 num=0x65(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一的进行编译并产生相应的机器代码(四条)

C语言利用函数体中的可执行语句,向计算机系统发出操作指令;按照语句功能或构成的不同,可将C语言的语句分为5类:

(1)控制语句(9条,可以细分为三种):

选择结构控制语句

if()~else~, switch()~

循环结构控制语句

for()~, while()~, do~while(), break, continue

其他控制语句

return, goto

return功能:终止执行函数,赋值(可选); 将控制权返回给调用函数的下一条语句

goto:无条件转移语句,跳转语句;

如上代码,在不使用goto的情况下,会分别打印出line 1、line 2、line3,在打印完line 1后使用goto语句,则直接跳转到goto目标代码,即代码中的end部分;

(2)函数调用语句:

函数调用语句由一次函数调用加一个分号构成.

例如:

printf(“hello world!”);

scanf(“%d”,&num);

(3)表达式语句:

表达式语句是由表达式后加一个分号构成,

例如:

“num = 10”是表达式,

“num = 10;”是赋值语;

(4)空语句:

空语句由一个分号构成,空语句什么操作也不执行.。

小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:【 八七零+九六三+二五一】适合在校大学生,小白,想转行,想通过这个找工作的加入。裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程。

(5)复合语句:

复合语句由大括号括起来的一组语句构成。

{

{ } //复合语句,注意大括号后不需要分号

}

复合语句一般与其它语句配合使用:

如for( ; ; ) { }

这玩意儿想的时候不多,写起来却很多,深究起来就多的完全说不完(┬_┬),C语言基础部分本应该在本篇文章中写完,由于时间问题,下次再写吧。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190920A06GER00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券