C基础学习笔记

1.C语言运算符优先级:

2.三种循环比较

while、do-while和for三种循环在具体的使用场合上是有区别的,如下:

1).在知道循环次数的情况下更适合使用for循环

2).在不知道循环次数的情况下适合使用while或者do-while循环,如果有可能一次都不循环应考虑使用while循环,如果至少循环一次应考虑使用do-while循环

但是从本质上讲,while,do-while和for循环之间是可以相互转换的。

3.C语言自创函数

  [数据类型说明] 函数名称 ([参数])

  {

    执行代码块;

    return (表达式);

  }

1).[]包含的内容可以省略,数据类型说明省略,默认是int类型函数;参数省略表示该函数是无参函数,参数不省略表示该函数是有参函数;

2).函数名称遵循标识符命名规范

3).自定义函数尽量放在main函数之前,如果要放在main函数后面的话,需要在main函数之前先声明自定义函数,声明格式为:[数据类型说明] 函数名称([参数]);

4.递归

一句话总结递归:自我调用且有完成状态。

5.变量存储类别

5.1 C语言根据变量的生存周期来划分,可以分为静态存储方式动态存储方式

静态存储方式:是指在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。

动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数;自动变量;函数调用时的现场保护和返回地址等。

5.2 C语言中存储类别又分为四类:自动(auto)、静态(static)、寄存器的(register)和外部的(extern)。

1).用关键字auto定义的变量为自动变量,auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式。

2).用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量。

  注意:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放;静态局部变量在编译时赋初值,即只赋初值一次;如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)

3).为了提高效率,C语言允许将局部变量得值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register作声明。

  注意:只有局部自动变量和形式参数可以作为寄存器变量;一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;局部静态变量不能定义为寄存器变量。

4).用extern声明的的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量。

6.内部函数与外部函数

1).在C语言中不能被其他源文件调用的函数称为内部函数 ,内部函数由static关键字来定义,因此又被称为静态函数,形式为:

  static [数据类型] 函数名([参数]) 

这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。

2).在C语言中能被其他源文件调用的函数称谓外部函数 ,外部函数由extern关键字来定义,形式为:

  extern [数据类型] 函数名([参数]) 

C语言规定,在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。

7.C语言字符串函数

使用字符串函数注意以下事项:

1)strlen()获取字符串的长度,在字符串长度中是不包括‘’而且汉字和字母的长度是不一样的;

2)strcmp()在比较的时候会把字符串先转换成ASCII码再进行比较,返回的结果为0表示s1和s2的ASCII码相等,返回结果为1表示s1比s2的ASCII码大,返回结果为-1表示s1比s2的ASCII码小;

3)strcpy()拷贝之后会覆盖原来字符串且不能对字符串常量进行拷贝;

4)strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串;

原文地址:https://www.cnblogs.com/go-go/p/5532866.html