编程技术是改变世界的力量。
本站
当前位置:网站首页 > 后端语言 > 正文

快速上手系列-C语言之基础篇(一)(c语言 怎么入门)

gowuye 2024-04-25 04:41 7 浏览 0 评论

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

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

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

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

1、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,则编译器会逐一的进行编译并产生相应的机器代码(四条)

2、语句

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)空语句:

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

(5)复合语句:

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

{

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

}

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

如for( ; ; ) { }

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

下篇开始说说数据类型,运算符与表达式,想了解的小伙伴们,可以关注收藏,后续内容请见下回分解。

相关推荐

Nginx 响应提速10倍,你需要知道的缓存性能优化——FastCGI调优
Nginx 响应提速10倍,你需要知道的缓存性能优化——FastCGI调优

Nginx缓存优化是帮助大家提升网站性能的重要操作之一,proxy_cache主要用于反向代理时,对后端内容源服务器进行缓存;fastcgi_cache主要用于...

2024-05-20 14:44 gowuye

王者荣耀天魔缭乱和逐梦之音返场活动地址 3月22日开启返场活动
王者荣耀天魔缭乱和逐梦之音返场活动地址 3月22日开启返场活动

王者荣耀官方终于确定了天魔缭乱和逐梦之音的返场活动,这让不少小伙伴乐开了花,返场活动将会在3月22日开启,下面就带来王者荣耀天魔缭乱和逐梦之音返场活动地址!王者...

2024-05-20 14:44 gowuye

常见的嵌入式web服务器有哪些?

嵌入式WEB服务器常见的有:Lighttpd,Shttpd,Thttpd,Boa,Mini_httpd,Appweb,Goahead。Lighttpd地址:http://www.light...

简述几款常见的嵌入式web服务器
简述几款常见的嵌入式web服务器

嵌入式web服务器,是web服务器当中的一种,是基于嵌入式系统而实现的web服务器。指的是在嵌入式系统(通俗点就是单片机系统)上实现的一个web服务器,可以通过...

2024-05-20 14:44 gowuye

教你如何利用fastcgi_cache缓存加速WordPress

在使用nginx缓存之前,必须在nginx里面加载专门的模块,这个模块叫做ngx_cache_purge。添加ngx_cache_purge模块下载ngx_cache_purge模块ngx_cache...

扫描WordPress漏洞

检测已知漏洞WPScan是一款广泛使用的WordPress安全扫描工具,它的一项重要功能是检测已知漏洞。在这篇文章中,我们将深入探讨WPScan如何检测已知漏洞,并结合实际示例,帮助读者更好地理解和应...

消灭 Bug!推荐几个给力的开源 Bug 跟踪工具
消灭 Bug!推荐几个给力的开源 Bug 跟踪工具

在这个充满bug的世界里,最遥远的距离不是生与死,而是你亲手制造的bug就在你眼前,你却怎么都找不到它。因此本文准备了7款优秀的开源bug跟踪系...

2024-05-20 14:43 gowuye

生物信息分析入门全攻略

生物信息学是生命科学研究的重大前沿领域,未来将占据生命科学研究的半壁江山。已经有越来越多的小伙伴投入到生物信息的学习中,但是入门难、深入慢、摸不到方向等都成为持续学习的拦路虎。本文根据生物信息技术大牛...

elkb实践经验,再赠送一套复杂的配置文件
elkb实践经验,再赠送一套复杂的配置文件

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。宝剑锋从磨砺出,梅花香自苦寒来。诗人白居易,三月下江南,看到沿路开放的桃花,心潮澎湃...

2024-05-20 14:43 gowuye

超详细从0到1 搭建ELK监控
超详细从0到1 搭建ELK监控

监控分类?Metrics用于记录可聚合的数据。例如,1、队列的当前深度可被定义为一个度量值,在元素入队或出队时被更新;HTTP请求个数可被定义为一个计数器,...

2024-05-20 14:42 gowuye

嵌入式开发 之Web配置页面开发
嵌入式开发 之Web配置页面开发

1.PHP是最好的语言??开发动态页面首选的语言是PHP,村村不能在这里忽悠人,如果你的硬件性能允许切略懂PHP,看到这里就可以退出了。本文面向的受众是Linu...

2024-05-20 14:42 gowuye

Python开发一个网站目录扫描工具用来检测网站是否有漏洞?
Python开发一个网站目录扫描工具用来检测网站是否有漏洞?

开发一个网站目录扫描工具是用来检测网站是否有非法目录请求的一个常见需求之一,我们要通过这个扫描工具来找到通过某个域名可以访问到的网站路径,可能对于有些系统来讲,...

2024-05-20 14:42 gowuye

创建一个类似Youtube的Id——使用PHP/Python/JS/Java/SQL

id通常都是用数字,不巧的是只有10个数字来使用,所以如果你有很多的记录,id往往变得非常冗长。当然对于计算机来说无所谓,但我们更希望id尽可能短。所以我们如何能使id变短?我们可以利用字母让它们附加...

快速云:有助于移动应用安全开发的五条妙计
快速云:有助于移动应用安全开发的五条妙计

许多企业不断地向其开发团队提供培训。但是某些漏洞,如早在十多年前就发现的SQL注入,如今仍广泛存在于各种应用中。因而,安全培训永不过时。在开发移动应用时,开发者...

2024-05-20 14:41 gowuye

洛杉矶国际电影节最佳动画短片奖影片《G’DAY》正式全网上映
洛杉矶国际电影节最佳动画短片奖影片《G’DAY》正式全网上映

7月2日,由M&CSaatchi创作,由深受好评的澳大利亚导演迈克尔·格雷西执导的动画短片《G’day》,正式在全网上映。该影片因其出色的创意赢得了洛...

2024-05-20 14:41 gowuye

取消回复欢迎 发表评论: