C语言编译和预处理 _FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预定义符号都是语言内置的。语法:我们可以定义的符号实际上十分的多样化1000register//为 register这个关键字,创建一个简短的名字for;;//用更形象的符号来替换一种实现break;case//在写case语句的时候自动把 break写上。
C语言文件操作 磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境 后缀为.exe)。文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件, 或者输出内容的文件。在以前所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。
动态内存管理 这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己 来决定。如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。int main()//动态内存开辟return 1;//异常返回//使用int i = 0;
结构体枚举、联合、位段 enum Day//星期Mon,Tues,Wed,Thur,Fri,Sat,Sunenum Sex//性别MALE,FEMALE,SECRETenum Color//颜色RED,GREEN,BLUE以上定义的enum Dayenum Sexenum Color都是枚举类型。{}中的内容是枚举类型的可能取值,也叫枚举常量。这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值。enum Color//颜色RED=1,GREEN=2,
C语言—常用字符串函数剖析 这个函数是什么意思呢,在C语言的函数库中,函数执行出现异常会自动返回错误码,而这个错误码会自动存储在全局变量。这个变量中,这个变量是C语言自动创建的,而strerror就可以去解读这个错误码。当然是不可以的,字符串内容被修改,无法找到\0,程序会死循环。可以减小我们程序出现问题的可能,大家有兴趣可以下去查一下。这个函数在数据结构中好像有过讲解,以后会写文章详细讲解。因为返回的是无符号整型,那么怎么能出来负数呢?大家思考一下,这个程序的运行结果是什么?返回错误码,所对应的错误信息。这个函数就比较有意思了。
C语言—深度剖析函数指针,函数指针数组 我们先来看一段代码输出的是两个地址,这两个地址是 test 函数的地址。那我们的函数的地址要想保存起来,怎么保存?首先,能给存储地址,就要求pfun1或者pfun2是指针,那哪个是指针?答案是:pfun1可以存放。pfun1先和*结合,说明pfun1是指针,指针指向的是一个函数,指向的函数无参 数,返回值类型为void。
C语言—字符指针,指针数组和数组指针详解 数组指针是指针?还是数组?答案是:指针。我们已经熟悉: 整形指针: int * pint;能够指向整形数据的指针。浮点型指针: float * pf;能够指向浮点型数据的指针。那数组指针应该是:能够指向数组的指针。下面代码哪个是数组指针?//p1, p2分别是什么?//解释:p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为10个整型的数组。所以p是一个指针,指向一个数组,叫数组指针。//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。
C语言—深度剖析数据在内存中的存储 计算机存储的方式主要有两种,分别是定点数和浮点数那存储的内存就那么多,怎么样才能存储更多的位数呢?科学家们就很聪明,通过科学计数法来创造了浮点数的存储好,说了那么多,感兴趣了了解一下就行那么需要我们记住的是,定点数存储的范围小,但是精确;浮点数存储的范围更大,但是不精确。
C语言结构体 有了结构体类型,那如何定义变量,其实很简单int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//初始化:定义变量的同时赋初值。struct Stu //类型声明//名字int age;//年龄//初始化int data;//结构体嵌套初始化//结构体嵌套初始化。
C语言指针—二级指针和指针数组 指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里?那么指针变量也是变量,那么pa在内存空间中应该也有地址pa的地址中存放了a的地址ppa中存放的是pa的地址那么我们该如何解引用呢那么我们再来详细解释一下注意不能理解为存放地址的地址。
C语言指针—野指针、指针运算、指针与数组 允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与 指向第一个元素之前的那个内存位置的指针进行比较。既然可以把数组名当成地址存放到一个指针中,我们使用指针来访问一个就成为可能。但是,数组就是数组,指针就是指针,二者不能混为一谈。那这样我们就可以很简单的计算出字符串长度。这个代码之前写过,但是是不是还能简化一下。**注意:**不是所有的指针都能相减。指向同一块空间的指针相减才会有意义。我们来看下面的式子的运算结果。:是一个变量,存放的是数组。:一组相同类型的元素集合。