动态分配内存 头文件:stdlib.h void *malloc(int size);:在堆区分配一块指定大小的内存空间,这块内存空间在函数执行完成后不会被初始化,它们的值是未知的 void *calloc(int len, int size);:在堆区分配一块len*size大小的内存空间,并且每个字节都初始化为0 void *realloc(void *ptr, int...
C语言 内存管理
C语言 错误处理
C语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据,在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno,该错误代码是全局变量,表示在函数调用期间发生了错误 errno errno:头文件errno.h定义的一个全局变量,记录了函数调用发生错误时的错误码,int类型,0表示没有错误 ...
C语言 文件操作
文件是数据源的一种,最主要的作用是保存数据。 在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。 对这些文件的操作,等同于对磁盘上普通文件的操作。 例如,通常把显示器称为标准输出文件,printf 就是向这个文件输出,把键盘称为标准输入文件,scanf 就是从这个文件获取数据 文件概述 stdin:标准输入文件,一般指键盘;scanf()默认...
C语言 结构体
结构体 数组可以存放一组相同数据类型的集合,但是如果一组数据类型不同的集合如何存放呢?那就是结构体(struct) struct 结构体名{ 结构体成员; ...; 结构体成员; }; 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同也可以不同,这样的变量或数组都称为结构体的成员(member) struct Student{ cha...
C语言 预处理指令
文件包含 #include <stdio.h> #include "userdef.h" 主要用来包含头文件,include 指令的处理很简单,就是把头文件插入到源文件,之后就不需要头文件了,因为头文件的内容都包含进来了。 一个 include 命令只能包含一个文件,可以有多个 include 指令,允许嵌套包含。 <>形式一般用于标准库头文件,""一...
C语言 指针
什么是指针 计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样。 例如 int 占用4个字节,char 占用1个字节 为了正确地访问这些数据,必须知道它们在内存中的准确位置,这个位置就叫做地址(Address)或指针(Pointer) 内存地址通常使用16进制数表示,地址从0开始依次增加,对于32位环境,程序所能使用的内存为4G,最小的地址为0,最大的地址为0xFF...
C语言 随机数
实际上,计算机只能为我们提供伪随机数,所谓伪随机数就是按照一定算法模拟产生的,其结果是确定的,是可见的。 计算机产生随机数的过程,是根据一个种子为基准,以某个递推公式推算出来的一系列数,当递推的范围足够大、往复性足够强、又符合正态分布或平均分布时,我们就可以认为这是一个近似的真随机数。 随机数 在 C 语言中,我们可以使用 stdlib.h 提供的 srand()、rand() 两个函...
C语言 数组
一维数组 定义数组,数组名为a,数组元素的数据类型为int整型,数组长度为5,数组是一个整体,它的内存是连续的 int a[5]; 给每个元素赋值,index索引从0开始 a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 5; 也可以在定义的同时进行赋值,数组初始化 int a[5] = {1, 2, 3, 4, 5}; int a...
C语言 函数
函数定义 如果函数不需要参数,应该将其参数设为void,这样如果在别处调用该函数时传入了参数,在编译期间会报错,这是一个编程好习惯,虽然这并不是必须这么做,你也可以不加void,通常情况下也没什么不妥。函数可以有多个return语句,但是只有第一个return语句会被执行。 #include <stdio.h> void func(void){ printf("fu...
C语言 分支与循环
if else 如果只有一条语句,则可以省略{} #include <stdio.h> #include <stdlib.h> int main(){ char c = '\n'; printf("char: "); c = getchar(); if(c == '\n'){ printf("你没有输入任何东西!...