今天我们学习了动态内存分配,
主要知识点:
// 1.malloc函数
// // 将堆区内存分配4个字节给一个int型的指针
// // 返回值 void *代表任何指针
// // 参数: 分配的内存大小
// // 考虑到平台不同,可以用sizeof(char)来确定1个字节
// 对分配的内存释放
// // 无返回值,有一个参数,填任意类型的指针
// // 释放内存的时候,只是对内存标记为可用,并没有对内存进行清空
// 跟malloc一样,在分配内存的时候清空所有内容,在效率上略低
// // 参数1:分配多少个内存
// // 参数2:每一个内存有多大
// char *str = calloc(2, sizeof(int));
// printf("%p\n", str);
// // 重新分配内存大小
// // 参数1:给谁分配
// // 参数2:重新分配的大小
// str = realloc(str, 100);
// printf("%p\n", str);
// str = realloc(str, 5000);
// printf("%p\n", str);
//
// // 内存操作函数
// // 1.初始化内存
// // 参数1:初始化谁
// // 参数2:初始化的值
// // 参数3:初始化多少
// str = memset(str, 65, 13);
// printf("%s\n", str);
//
// // 2.内存拷贝函数
// // 参数1:拷贝到谁(dest)
// // 参数2:从谁拷贝(source)
// // 参数3:拷贝多少字节
//
// // 跟字符串拷贝函数的区别:字符串拷贝只能拷贝字符串,内存拷贝可以拷贝任何内容
// memcpy(str + 1, "iiioooo", 3);
// printf("%s\n", str);
//
// // 3.内存比较
// // 参数1和参数2:要比较的两块内存
// // 参数3:比较多少字节
// // 返回值:如果两个内存完全一样,返回0
// // 如果不一样,就把不一样的内存内容取差值返回
// int result = memcmp(str, "aaa", 3);
// printf("%d\n", result);
// free(str);
今天主要就学习这些东西,今天的东西不是特别难,但很抽象,可能有点难理解,但是作业题中,有一道题就不会了,前两道题还可以,我感觉多做做题就理解它的意思了.
通过这几天c语言的学习,我发现自己对编程有了很多的理解,也有很大的进步,原来不知道怎么编的那种纠结现在在逐渐的减少,自己可以多编点东西了,继续加油吧!