您的位置:首页 > 运维架构 > Linux

苏嵌学习linux C的C语言第一天(个人总结)

2018-01-26 15:35 253 查看
计算机的基本结构是储存器(主储存器,外储存器,寄存器)加处理器(CPU)

在C语言中,所谓的程序设计,我觉得可以用8个字概括:储存程序,程序控制。具体点来说:程序=数据结构+算法+开发工具+程序设计语言。程序的执行是从入口点开始,原则是由上而下,由左而右进行执行(由main开始,由main结束)。

1 数据类型

C语言学习过程中,一个重要知识点就是数据类型。常用单位是位,字,字节。数据的存储方式有整数,浮点数,数值数据和非数值数据(ASCII)。其中,我们需要注意的是:浮点数的比较,我们只能用误差来比较,与“==”不同。

一个C语言程序中,我们一般包含头文件,注释,main函数,printf函数,return等。除void函数不需要,函数(如int)一般都需要注明返回值。在linux中,程序编写好,我们需要在窗口外进行gcc命令(详情见http://man.linuxde.net/gcc),我习惯的一般书写格式是:gcc (-wall) -o  名称 C源文件。

C语言中数据类型及其所占空间大小我就不做具体介绍了。重点要提一下,测试数据类型大小,我们用size of (这里的size of 并非程序)。只要是指针,它的size就是4个字节。

最后在数据类型中,我重点提一下数据的输入与输出。

格式输出函数printf(格式控制字符串,输出项表项),格式为printf(选项)(参数)。Printf中我们要了解并注意的是格式替代符(详情参考http://man.linuxde.net/printf)。一般我们要注意的是:%o(不带正负号的八进制值)、%x(十六进制无符号整数输出,不输出0x)、%p(输出指针地址<十六进制>)、%%(输出%,同转义符\用\\输出\)、%.n(n表示小数点后的位数<默认右对齐,-表示左对齐,+表示符号>)。

scanf函数是一个标准库函数,scanf函数的一般形式为:scanf(“格式控制字符串”, 地址表列)。其中要注意的是,地址表列中给出各变量的地址,在此函数里由地址运算符“&”后跟变量名组成的(例如:&a、&b分别表示变量a和变量b的地址)。我们在执行程序时,要注意缓冲区没用的东西,scanf(”空格%d······”)可以解决。此外需要注意的是:(1)scanf(“%s",str) 输入遇到空格,tab,回车时,截断。(2)scanf(“%s",str)
输入长度超过str长度时,会报错,我们可以用fgets函数解决(fgets(str,n,stdin))。

2 运算符和表达式

有关运算符和其表达式的内容我不做过多的介绍,下面我提几个注意点跟易错点:

(1)             在复合赋值运算符中,我们要注意计算时的优先性,举个例子x *= y+8 等价于     x=x*(y+8) 。

(2)             赋值运算符结合率为:“自右而左”;关系运算符的结合率为:“自左而右”。

(3)             在逻辑运算中,&&和||的运算要注意短路问题,只要前者完成条件后者不需要任何运算。

(4)             ++I 是先加后代入;i++ 是先代入后加;

此外要注意优先级的顺序,你们可以网上找下运算符优先级表。

3 三种基本程序结构和相关语句

三种基本程序结构是顺序,选择,循环结构。顺序结构比较简单不做过多介绍,我先简单说下选择结构。选择结构有if语句和switch语句,if语句是判定给定的条件,决定执行不同的两段程序之一,而switch语句的不同就是它是多分支结构的选择。

这里提到switch语句,我想有必要把break与continue的语句的区别跟如何运用说明一下。(1)break语句可用于switch语句跳出switch块,而continue不能用于switch语句。(2)break和continue都可用于循环语句,不同的是执行break之后立即退出当前循环,而continue执行后仅跳过本次循环,但是循环还在继续。

下面我介绍下while语句与do while语句的区别。它们都属于循环结构的语句,while语句的结构是 while + 表达式 + 语句,do while 语句的结构是 do + 语句 + while + 表达式。在while语句中,程序是先判断后执行,区别于do while语句是先执行再判断。

与while语句相比我用的比较多的是for 语句,他的结构是for (表达式1; 表达式2; 表达式3) + 语句。其中表达式1是赋值,表达式2是条件,表达式3是执行完语句后执行一条语句。

循环语句有几点需要我们注意:

(1)             在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。

(2)             建议for语句的循环控制变量的取值采用"半开半闭区间"写法。

(3)             不能在for循环体内修改循环变量,防止循环失控。

(4)             循环要尽可能短,要使代码清晰,一目了然。

(5)             把循环嵌套控制在3层以内。

(6)             for语句的控制表达式不能包含任何浮点类型的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言