c语言笔记照片_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++吧,而且学习编程的话有一个学习的氛围跟交流圈子特别重要!这里我推荐一个C语言C++交流,--87;09;后6。32;51,不管你是大牛还是小白,大家都一起成长进步。
(5)复合语句:
复合语句由大括号括起来的一组语句构成。
{
{ } //复合语句,注意大括号后不需要分号
}
复合语句一般与其它语句配合使用:
如for( ; ; ) { }
这玩意儿想的时候不多,写起来却很多,深究起来就多的完全说不完(┬_┬),C语言基础部分本应该在本篇文章中写完,由于时间问题,下次再写吧。
c语言笔记照片_C语言入门这一篇就够了-学习笔记相关推荐
- Python语言入门这一篇就够了-学习笔记(十二万字)
Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...
- 0-c语言入门这一篇就够了-学习笔记(一万字)
内容来自慕课网,个人学习笔记.加上了mtianyan标签标记知识点. C语言入门 -> Linux C语言编程基本原理与实践 -> Linux C语言指针与内存 -> Linux C ...
- c语言笔记照片_c语言笔记
如何看懂一个程序,分三步 1. 流程 2. 每个语句的功能 3. 试数 对于一些小程序的算法 尝试自己去编程解决它,大部分人都无法自己解决 如果解决不了,尝试看答案 关键要把答案看懂,这个要花很大的精 ...
- c语言笔记照片_C语言学习笔记
一般情况下,在C语言中,函数指针定义时就会说明其指向的函数的参数情况以及返回值类型,比如以下定义: void (*func_p)(int a); 以上代码就声明了一个函数指针func_p,其指向的函数 ...
- c语言笔记照片_C语言基础知识笔记
一.C语言的结构 1.Hello world 简单来说,一个C程序就是由若干头文件和函数组成. #include //包含头文件 /* *主函数 */ int main(){ printf(" ...
- 蓝桥杯备考——算法竞赛入门经典(第2版)学习笔记2
算法竞赛入门经典(第2版)学习笔记2 第二章 循环结构程序设计 2.1 for循环 2.2 while 循环和do-while 循环 2.3 循环的代价 2.4 算法竞赛中的输入输出框架 2.5 注解 ...
- 《Python编程:从入门到实战》(第2版)学习笔记 第5章 if语句
[写在前面]为进一步提高自己的python代码能力,打算把几本经典书籍重新过一遍,形成系统的知识体系,同时适当记录一些学习笔记,我尽量及时更新!先从经典的<Python编程:从入门到实战> ...
- javascript从入门到跑路-----小文的js学习笔记(25)------运动框架----匀速运动、缓冲运动、多物体运动、链式运动
** javascript从入门到跑路-----小文的js学习笔记(1)---------script.alert.document.write() 和 console.log 标签 javascri ...
- javascript从入门到跑路-----小文的js学习笔记目录
** javascript从入门到跑路-----小文的js学习笔记(1)---------script.alert.document.write() 和 console.log 标签 javascri ...
最新文章
- 应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020
- Mango 的组织重构
- 1045 Favorite Color Stripe (30 分)【难度: 中 / 知识点: DP】
- Nginx 内置变量,细化规则,真实IP获取及限制连接请求
- 鸟叔linux命令大全,[鸟哥linux视频教程整理]02_01_linux操作系统及常用命令
- python文件、存储、压缩
- 精通JavaScript事件.详解
- 自媒体是什么?三大媒体平台详细介绍,不了解的赶紧看着吧!
- 【docker-ce】k8s集群docker容器异常重启问题分析
- python后端工程师学什么_成为后端工程师需要学习什么
- 【PaddleOCR】Paddle-Lite, Paddle2ONNX介绍, 学习教程...
- GDAL库扩展Landsat系列MTL文件格式支持
- Android内存检测工具
- Android获取的MP3音乐的专辑封面图片
- 【排序-简单】1528. 重新排列字符串
- 【技术】浅析磁传感器HALL、AMR、GMR、TMR技术
- 抓住Linux木马的小尾巴并且清除它
- Netty实战 IM即时通讯系统(一)IM系统简介
- 「应用笔记」机器人导航停止的常见原因
- 宇枫资本投资理财前应做好哪些准备
热门文章
- vue 打包html静态页面,vue项目打包、vue项目打包后空白界面解决办法
- Python+OpenCV:图像轮廓
- linux mysql 建索引_MySQL在创建索引之前一定要想到的事情
- Python Appium 元素定位方法简单介绍
- CS 540: Introduction to Artificial Intelligence
- OpenGL 获取当前屏幕坐标对应的三维坐标
- $ORACLE_HOME变量值末尾多“/”惹的祸
- mongodb 日常维护
- 16 计划稳定性与控制
- poj 2153 Rank List