内存的理解
计算机内存是以字节为单位进行存储,每个字节都有自己的编号即地址(指针)。
本图为源代码
其中01 00 00 00 中的两个连在一起的数为一个字节,0x00FAFB7C是01的地址,之后的三个字节的地址值分别递增1
上图中,num[3]为int型,每个元素占4字节,地址如图显示。野指针与悬空指针
野指针:未初始化的指针
悬空指针:只想的地址被free掉以后未置为NULL的指针内存空间的动态分配:
1、malloc函数
malloc函数会在动态存储区分配一块内存,如果分配成功则返回值为这块内存的首地址,即返回值为指针;如果失败则返回控制针NULL。函数的参数为分配内存的大小(字节)。
2、free函数
free函数将之前分配的内存释放,参数为所分配内存的指针。
分配动态内存的步骤:
①定义一个指针
②分配一块内存空间指向上面的指针
③用完之后释放这块内存空间
如:
void *p;
p=malloc(10);//......
free(p);
注:对一个指针应用free之后,它的值不会改变,但它指向了一个无效的内存区,为悬空指针。
如果没有及时释放某块动态内存,并将他的指针指向别处,则会造成”内存泄漏“。
- 文件处理
C语言在stdio.h中定义了一个FILE文件结构体类型,在C程序中系统对文件进行的各种操作是通过指向文件结构体的指针变量来实现的。
定义一个只想文件结构体类型的指针变量:
FILE*p;//p为指针名
1、打开文件
fopen函数
在vs中函数名:fopen
返回值 : 文件指针(代表这一个文件)
参数列表:
[参数1] : 字符串类型,
表示文件的路径
[参数2] : 字符串类型,
表示打开文件的方式
2、关闭文件
C语言文件使用完后,应该立即关闭文件,防止由于误操作等原因破坏已经打开的文件。
使用fclose函数 用法为:fclose(文件指针)
FILE*p;
fopen_s(&p, "D:\\文本.txt", "a");
if (p == NULL)
{
printf("文件打开不成功");
return 0;
}
fclose(p);
要判断是否成功打开了文件