C知识点整合

Posted 梅诺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C知识点整合相关的知识,希望对你有一定的参考价值。

C语言总结

一.语法

 1.常见的数据内置类型所占字节(64位下):char(1) int(4) float(4) long(4)double(8) _Longlong(8)

 2.变量:(1)定义:类型+变量名,c语言中规定使用变量前必须在程序 开始部分就定义并进行初始化(防止随机值),

               (2)变量的存储类型决定变量的生命周期(普通内存,运行时堆栈,硬件寄存器)            

 3.数据作用域:代码块作用域,文件作用域,原型作用域,函数作用域

4.操作符   

(1).逻辑运算符:&&  ||     

2).位操作符:&   |

(3).操作符的优先级很重要

 二.数组 

1.定义:一组具有相同特征的数据的集合;定义一维数组并分配空间时要有明确的大小;缺省定义二维数组时第二维的大小不可缺少

 2.使用:(1)初始化数组有两种方式:大括号一个一个初始化或者直接使用字符串的方式初始化

      (2)数组名即为数组首元素的地址

                  (3)可以通过下标访问数组元素,也可以定义一个指向数组的指针进行访问,当然,这两种访问方式等价

               (4)数组名作为参数传递的时候会发生降级

               (5)数组存储顺序:行主序

三、语句(;代表空语句,不执行任何内容)  

1.if/else :1)用法:if(判断语句)else条件判断语句,c语言中无布尔 类型,判断语句的结果一般用整数代替,0为假,非0为真;

               (2else和最近的if匹配

 2.while:(1)用法:while(测试条件)循环的测试在循环体开始之前执行;

             (2循环中可使用break(终止整个循环和continue(终止本次循环,再次条 件测试),但两者操作的都是内部循环

 3.do/while:(1)测试条件在循环体执行之后才进行;(2)一般至少需要执行一次循环体时使用该语句(相比较while语句)

4.for:(1)测试语句(初始值;终止条件;调整部分)(2for语句内部的循环体可空;

5.switch:(1)用于多种情况的处理;(2)测试条件的表达式值必须为整数;(3 每个子语句后面最好加上break语句以防止执行干扰,子语句最后加入default  语句进行错误处理

  6.goto:1)用法:goto +标签,立即从深层循环中跳转到某个标签;(2goto的使用场合比较特殊,谨慎使用,但不是不可使用

 四、结构体,联合、枚举

1.结构体:(1)定义:类型+成员名称(结构体中的成员类型可多种,标量,数组,指针或者其他结构);使用大括号初始化每个成员,中间以“,”隔开

                 (2)使用:可使用typedef生成新的类型,定义变量来访 问成员;访问方式:间接访问(.)直接访问(指向结构体的指针->成员);

                 (3)存储分配方式:系统默认对齐字节(Windows8,/linux4)和位段对齐方式(位段中位的最大数目限制在一个整型值长度之内)

2.联合:(1)定义:所有成员共用内存相同位置的一种结构;分配的内存长度大小取决于最长成员的长度;初始化必须是联合的第一个成员

3.枚举:(1)一种用来定义类型的集合结构,默认情况下将整数值赋给枚举量,每个枚举量的值都为其前一个量加1

              (2)定义枚举值时系统不会分配空间的

 五.文件操作 

 1.打开文件:(1)函数原型:FILE* fopenpath,mode);

                      (2)mode的不同选项:r(带来只读文件)、r+(打开可读写的文件)、w(打开写文件)、w+(打开可读写文件、a(以追加写的方式打开只写文件)、a+(以追加方式打开可读写的文件)

                    (3)一般在程序中必须对打开返回值做检查

2.关闭文件:(1)函数原型:int fclose(FILE* stream),用来关闭之前被fopen打开的文件,即配对使用

3.移动文件流函数:(1)函数原型:fseek(FILE* stream,offset,whence)

            (2)whence选项:SEEK_SET(offset为新的读写位置)、SEEK_CUR(从此处往后偏移offset的位置)

 4.写数据至文件流:(1)函数原型:size_t fwrite(const void* ptr,_size,number,FILE* stream),各参数表示:参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*number来决定。  

 5.其他的一些操作函数:fgets(),fputc(),getc(),getchar(),putc().....

 六、函数 

1.定义:返回值类型+函数名+(参数列表)(函数无返回类型则定义为void

2.函数声明出现于函数定义之前

3.函数递归(条件):(1)存在限制条件,当符合这个条件的时候递归不在继续;(2)每次递归调用后要越来越接近限制条件

4.函数接受传参的方式:(1)传值方式(效率太低或者有时达不到效果)

                                        (2)传址方式(引用更加高效)

5.函数的参数可缺省传参,一般是从后往前缺省,不支持中间参数或者第 一个参数跳跃缺省

6.函数还支持函数指针方式的定义

七、指针   

 1.定义:首先指针是变量,在二进制层面指针的值为内存单元的地址,在语言层面指针的值就是变量的地址。

 2.使用:(1)一般都在声明的时候初始化它(要么是有效的变量地址要么是 NULL),避免野指针的产生;

             (2)函数的参数或者返回值类型都可声明为指针类型;

             (3)可以解引用访问(间接访问)指针的内容(*+指针变量名)

              (4)二级指针即为指针的指针,往往拿到的是一级指针的地址

     (5)声明一个指针变量并不会自动分配内存空间

3..指针表达式:作为右值使用的时候一般拿的是值,作为左值表示的是地址

4..指针的运算:指针可进行自加自减运算,操作的大小为指针所指类型的大

5 .指针在使用完后一定要释放(一般直接置为NULL),这样可以避免指针垃圾内存

6.可以定义并使用函数指针,指针里面存放的就是函数的地址

7.指针所指的字符串为常量,不可修改内存里的值(和数组里存放的区分开)    

八、动态内存分配使用函数:

1malloc()开辟空间,但不进行初始化;free()释放空间,两个函数配对使用。

2calloc()函数与malloc函数相同都是开辟空间的,但不同的是calloc函数会对开辟的空间进行初始化。  

3realloc()函数用于修改一个原来已经分配好的内存块的大小。一般新添加的内存块会追加到原内存块的后面。    

以上是关于C知识点整合的主要内容,如果未能解决你的问题,请参考以下文章

C知识点整合

C知识点整合

Java数据类型相关知识点-整型

《数据结构:c语言版》(严蔚敏)知识点整合

C语言实现使用动态数组实现循环队列

动态内存管理(一次过)