
C语言笔记
狐非
这个作者很懒,什么都没留下…
展开
-
printf和scanf
printf的转换说明printf的类型输出%d 有符号整数%u 无符号整数%x 16进制小写%X 16进制大写%g 自动判断用普通方法还是科学计数法输出合适(不会显示多余的0)%c 单个字符%s 字符串%p 指针 %% 会输出%(单个%不能达到原创 2016-10-17 20:20:28 · 572 阅读 · 0 评论 -
不定参的宏定义使用
什么是不定参 函数中的参数个数可以不固定,比如printf()函数可以一次输出若干个变量的值,这种情况就叫做不定参函数。不定参的使用//test.h#include<stdio.h>#include<stdarg.h>void writeLog(int line,const char *fromat, ...){ va_list args; static char l原创 2016-12-08 14:23:34 · 2914 阅读 · 0 评论 -
struct和nuion
structstruct即结构体,是有若干成员组成的构造类型,其中包含的成员可以是基本的数据类型,也可以是结构体用法如下:struct Student { char name[20]; char sex[3]; char tel[11];};int main(){ struct Student stu1; strcpy(stu1.name, "张三");原创 2016-11-12 22:13:07 · 468 阅读 · 0 评论 -
define和typedef
struct和typedef都是自定义数据类型,用于在基础类型不够的情况下,基于自己的需要自己定义的特定数据类型 typedeftypedef即type define 也就是类型的定义,使用它可以将一些基础数据类型的类型名另起一个通俗易懂的别名(只能对现有的类型名起别名并不能生成一个新的数据类型) 比如:int main(){ typedef int index; int temphttp:/原创 2016-11-11 13:37:48 · 420 阅读 · 0 评论 -
static和extern的用法
staticstatic是变量的一种属性,表示静态变量 生命周期:因为静态变量是存储在程序静态区,而程序的静态区会随着程序的开始而申请随着程序的结束而回收,所以静态变量的生命周期也就取决于当前程序的运行和结束时间 作用域:静态变量的作用域取决于生命的位置,声明全局变量时静态变量的作用域在此文件内,声明局部变量时静态变量的作用域在声明它的局部范围内,等同于局部变量的作用域。虽然静态局部变量的作原创 2016-11-11 15:55:05 · 354 阅读 · 0 评论 -
文件
open:FILE * fopen(const char * path,const char * mode);第一个参数path表示要打开的文件路径,第二个参数mode表示要以什么样的方式打开,如果打开成功则会返回一个文件指针(指向当前打开文件的缓冲区)以下是mode的可选值:r:只读方式打开,如果打开文件不存在,不会新建;w:只写,如果文件不存在会新建一个文件,如原创 2016-10-17 20:37:40 · 253 阅读 · 0 评论 -
字符串处理函数
字符串处理函数头文件#include字符串长度:strlen(字符数组名): 会返回参数中字符数组中字符串的不包含‘\0'的长度。字符串拼接:strcat(str1,str2):会将字符串str2拼接到字符串str1的后面,但是这里有一个问 题,如果str1的长度不够大的话就会导致字符串溢出,就会覆盖字符原创 2016-10-17 20:36:06 · 2051 阅读 · 0 评论 -
字符串处理函数fgets()和gets()
scanf():一次只能接受一个单词,不能接受一行gets():接受一整行的输入,输入多少就读取多少,但有可能输入的长度和要赋值的变量目标不一致而导致缓冲区溢出,这也就意味着它可能会改变不属于当前程序所在空间的数据,一次在新标准C11中已经被废弃不用了,不提倡使用gets()。gets_s():新标准C11中的可选项,因为是可选的所以可能有的编译器并没有实现这个函数 所以也就不支原创 2016-10-17 20:33:41 · 796 阅读 · 0 评论 -
数组和指针
什么是指针:存放地址的变量指针的加减:指针的加减和指针指向的变量类型有关,指针++并不一定是加1,而是加上一个他所指向的变量类型所占的空间比如:int a=100;int *p=&a; p++;这个时候p存放的地址实际上加的是4,因为一个int类型占4个字节。什么是数组:相同数据类型的元素按一定顺序排列的集合,把有限个类型相同的变原创 2016-10-17 20:32:19 · 225 阅读 · 0 评论 -
函数
什么是函数函数是为了避免相同功能的代码重复书中写而将其提取为函数供调用的c语句的集合,需要该功能的时候,直接调用该函数即可,不用每次都堆叠一大堆的代码。需要修改该功能的时候,也只要修改和维护这一个函数即可。函数包括3个部分:1.函数名 具有唯一性(标准c不支持函数重载) 2.函数返回值 执行函数时通过return来将函数体内的值返回到函数外,可以通过调用原创 2016-10-17 20:28:12 · 254 阅读 · 0 评论 -
循环和分支
什么是循环?循环是指只要满足条件就会一直执行下去ps:循环必须设置一个循环退出条件,避免死循环比如while()int i=0;while(i{printf("%d",i)i++;}则最终会输出: 012 说明while后面大括号中的语句总共执行了3次,第四次时i=3,不满足int原创 2016-10-17 20:25:42 · 473 阅读 · 0 评论 -
运算符和语句
语句语句的组成运算符: ‘ = ’ ‘ + ’ ‘ - ’ ‘ * ’ ‘ / ’‘ % ’‘ ++ ’‘ -- ’sizeof等关键字:int break if else等表达式:值语句类型赋值语句: 数据对象(空间),左值(可修改值),右值(作为右值时是不可修改的值)复合语句:循环语句(for,while原创 2016-10-17 20:22:33 · 314 阅读 · 0 评论 -
枚举值的组合使用
有时候枚举只返回一项会显得不够用,比如新建一个枚举类型week它总共有7项分别代表周日到周一,声明一个week类型的枚举值work用来表示一个人的值日安排,这个人的值日安排可能不止一天,如果work的值只能为week7个枚举项中的一个显然是不够用的。这时候就需要用到枚举的组合。|和||,&和&&的区别 想要使用枚举的组合就需要知道|和||。&和&&之间的关系“|”和“||” “|”和“|原创 2016-12-08 15:20:59 · 2633 阅读 · 0 评论