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为真;
(2)else和最近的if匹配
2.while:(1)用法:while(测试条件)循环的测试在循环体开始之前执行;
(2循环中可使用break(终止整个循环和continue(终止本次循环,再次条 件测试),但两者操作的都是内部循环
3.do/while:(1)测试条件在循环体执行之后才进行;(2)一般至少需要执行一次循环体时使用该语句(相比较while语句)
4.for:(1)测试语句(初始值;终止条件;调整部分)(2)for语句内部的循环体可空;
5.switch:(1)用于多种情况的处理;(2)测试条件的表达式值必须为整数;(3) 每个子语句后面最好加上break语句以防止执行干扰,子语句最后加入default 语句进行错误处理
6.goto:(1)用法:goto +标签,立即从深层循环中跳转到某个标签;(2)goto的使用场合比较特殊,谨慎使用,但不是不可使用
四、结构体,联合、枚举
1.结构体:(1)定义:类型+成员名称(结构体中的成员类型可多种,标量,数组,指针或者其他结构);使用大括号初始化每个成员,中间以“,”隔开
(2)使用:可使用typedef生成新的类型,定义变量来访 问成员;访问方式:间接访问(.)直接访问(指向结构体的指针->成员);
(3)存储分配方式:系统默认对齐字节(Windows:8,/linux:4)和位段对齐方式(位段中位的最大数目限制在一个整型值长度之内)
2.联合:(1)定义:所有成员共用内存相同位置的一种结构;分配的内存长度大小取决于最长成员的长度;初始化必须是联合的第一个成员
3.枚举:(1)一种用来定义类型的集合结构,默认情况下将整数值赋给枚举量,每个枚举量的值都为其前一个量加1;
(2)定义枚举值时系统不会分配空间的
五.文件操作
1.打开文件:(1)函数原型:FILE* fopen(path,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.指针所指的字符串为常量,不可修改内存里的值(和数组里存放的区分开)
八、动态内存分配使用函数:
(1)malloc()开辟空间,但不进行初始化;free()释放空间,两个函数配对使用。
(2)calloc()函数与malloc函数相同都是开辟空间的,但不同的是calloc函数会对开辟的空间进行初始化。
(3)realloc()函数用于修改一个原来已经分配好的内存块的大小。一般新添加的内存块会追加到原内存块的后面。
以上是关于C知识点整合的主要内容,如果未能解决你的问题,请参考以下文章