首页 > 编程语言 >2023-2024-1 20231304 《计算机基础与程序设计》第十二周学习总结

2023-2024-1 20231304 《计算机基础与程序设计》第十二周学习总结

时间:2023-12-17 20:45:14浏览次数:27  
标签:200 20 函数 C语言 2024 内存 2023 20231304 指针

2023-2024-1 20231304 《计算机基础与程序设计》第十二周学习总结

作业信息

这个作业属于哪个课程 2023-2024-1-计算机基础与程序设计
这个作业要求在哪里 2023-2024-1计算机基础与程序设计第十二周作业
这个作业的目标 《C语言程序设计》第11章并完成云班课测试
作业正文

教材学习内容总结

  1. 函数指针:函数指针是一种特殊的指针,它指向一个函数。通过函数指针,可以在运行时调用特定的函数。

  2. 数组指针:数组指针是一种指针,它指向一个数组的第一个元素。通过数组指针,可以访问数组中的各个元素。

  3. 字符串操作:C语言提供了许多字符串操作函数,如字符串拷贝、连接、查找、替换等。

  4. 动态内存分配:动态内存分配是一种在运行时分配内存的方法。通过动态内存分配,可以在程序运行时动态地分配和释放内存。

  5. 预处理器指令:预处理器指令是在编译之前处理的特殊指令,如宏定义、条件编译、文件包含等。

  6. 文件操作:C语言提供了文件操作函数,用于打开、关闭、读取、写入文件等。

  7. 库函数:C语言提供了许多库函数,如标准库(如输入输出、数学运算等)、字符库(如字符串操作、字符转换等)、动态库等。

  8. 错误处理:C语言提供了错误处理机制,如错误码、错误提示等,以便在程序出现错误时进行处理。

  9. 面向对象编程:C语言支持面向对象编程,通过结构体、联合体、枚举等实现面向对象编程的特性。

  10. 网络编程:C语言提供了网络编程的相关函数,如套接字创建、连接、接收发送数据等,用于实现网络通信功能。

基于AI的学习

我在学动态内存分配知识点,请你以苏格拉底的方式对我进行提问,一次一个问题

1.在动态内存分配中,为什么要使用指针?

这里是两个常见需要动态分配对象的情况:

(1)分配不限制作用域的对象,对象存储在其特定的内存中,而不是在内存中存储对象的拷贝。如果对象是可以拷贝/移动的,一般情况下你应该选择使用定义对象的方式。

(2)定义的对象会消耗大量内存,这时可能会耗尽栈空间。如果我们永远不需要考虑这个问题那该多好(实际大部分情况下,我们真不需要考虑),因为这个本身已经超出 C++ 语言的范畴,但不幸的是,在我们实际的开发过程中却不得不去处理这个问题。

当确实需要动态分配对象时,应该将对象封装在一个智能指针(smart pointer)或其他提供RAII机制的类型中(类似标准的 container)。智能指针提供动态对象的所有权语义(ownership)。如果使用得当,基本上可以避免自己管理内存

2.请解释动态内存分配的三个常用函数:malloc、calloc 和 realloc 的作用及区别。

(1)malloc在C语言中不是关键字而是C函数库中提供的函数。如果需要进行内存分配时在调用malloc时就是在内存池中提取一块内存空间(在堆上申请一块空间),但是这块空间是连续的空间。,并向该程序返回一个这块内存的指针。
(2)calloc和calloc的动态分配内存是有相同之处,他们的主要区别在于:
①在函数原型中calloc多了一个参数(他的参数是由所需元素的个数和每个元素的字节数组成)
②最大区别:calloc在调用完后返回指向内存的指针之前把他初始化为0
(3)ptr是指向原来地址的指针。
这个函数用于修改一个原先已经分配内存块的大小。
使用:
Ⅰ.可以使一块内存扩大或缩小(原来的内存块可以扩大缩小)
①如果是扩大一个内存块,则将原来的内存块保留在他的后边新增一块内存块(但是新增的内存块并未初始化)
②如果是缩小一块内存块,则将该内存块的后半部分直接拿掉,剩余部分内存块及其内容保留。
Ⅱ.原来的内存块无法扩大缩小
如果是着这种情况,realloc会重新开辟一个新的内存空间,并把原来的内存空间的内容拷贝到新的内存空间里。

3.在 C/C++ 程序中,如何实现内存的释放?

在C/C++程序中,实现内存释放的主要方法是使用内存分配函数(如malloc、calloc或new)和相应的内存释放函数(如free、delete或delete[])。

#include <iostream>
int main()
 {
    int *ptr = (int *)malloc(10 * sizeof(int));

    if (ptr == NULL) {
        std::cout << "内存分配失败" << std::endl;
        return 1;
    }// 使用分配的内存
    for (int i = 0; i < 10; i++) {
        ptr[i] = i;
    } // 释放内存
    free(ptr);

    return 0;
 }

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90
第五周 300/1600 2/11 20/110
第六周 200/1800 3/14 25/135
第七周 200/2000 1/15 20/155
第八周 200/2200 3/18 20/175
第九周 300/2500 1/19 15/190
第十周 250/2750 1/20 25/215
第十一周 250/3000 2/22 25/240
第十二周 200/3200 1/23 15/255

标签:200,20,函数,C语言,2024,内存,2023,20231304,指针
From: https://www.cnblogs.com/Augenstem/p/17902639.html

相关文章

  • 学期 2023-2024-1 20232326《网络空间安全导论》第六周学习总结
    教材学习内容总结教材学习中的问题和解决过程问题1:挑战应答认证协议为什么可以对抗重放攻击?问题1解决方案:百度得知挑战应答认证协议可以对抗重放攻击的原因是因为它引入了挑战和应答的机制。在该协议中,服务端会向客户端发送一个随机的挑战值,客户端必须通过对挑战值进行加密......
  • 2023-2024-1 20231303 《计算机基础与程序设计》赵泊瑄第十二周学习总结
    2023-2024-120231303《计算机基础与程序设计》赵泊瑄第十二周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里作业要求的链接https://i.cnblogs.com/posts/edit)这个作业的目标总结第十二周学习收获作业正文2023-......
  • 2023-2024-1 20231306 《计算机基础与程序设计》第十二周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十二周作业这个作业的目标无作业正文https://www.cnblogs.com/zwywuhu/p/17908748.html教材学习内容总结《C语言程序设计》——第十......
  • 20232413《网络》第六周学习总结
    教材学习内容总结教材学习中的问题和解决方案问题一:跨站脚本攻击(XSS)解决方案: 对用户输入进行验证和转义,使用内容安全策略(CSP),避免直接在页面中执行未经验证的用户输入。问题二:跨站请求伪造(CSRF)解决方案:使用CSRF令牌,验证请求来源,确保只有合法的用户可以提交请求。基于AI的学......
  • 2023-2024-1 20231323《计算机基础与程序设计》第十二周学习总结
    2023-2024-120231323《计算机基础与程序设计》第十二周学习总结作业信息所属课程2023-2024-1-计算机基础与程序设计作业要求2023-2024-1计算机基础与程序设计第十二周作业作业目标自学教材《C语言程序设计》第11章并完成云班课测试作业正文本博客链接教......
  • 2023-2024-1 20231301 《计算机基础与程序设计》第十二周学习总结
    2023-2024-120231301《计算机基础与程序设计》第十二周学习总结作业信息作业链接作业课程<班级>(2023-2024-1-计算机基础与程序设计)作业要求<作业>(2023-2024-1计算机基础与程序设计第十二周学习总结)作业目标<《C语言程序设计》预习第十一章>《C语言程序设......
  • 2023-2024-1 20231319 《计算机基础与程序设计》第十二周学习总结
    2023-2024-120231300《计算机基础与程序设计》第X周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十二周作业这个作业的目标自学教材《C语言程序设计》第11章教材学习内容总结......
  • 2023-2024-1 20232422《网络》第6周学习总结
    教材内容梳理如下教材学习中的问题和解决过程问题1:区块链的数据结构为什么具有不可篡改的特性?解答:研读教材可知。区块链的数据结构:比特币网络中,数据以文件的形式被永久记录,称这些记录为区块。新区块一旦被记录在区块链上,就不能被改变或者删除。时间戳记录特定的数据生......
  • 2023-2024-1 20231325 《计算机基础与程序设计》第12周学习总结
    ###目录*作业信息*教材学习内容总结1.《c语言程序设计》第11章*基于AI的学习*上周错题*学习进度条作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业的要求在哪里1.学习《C语言程序设计》第11章并完成云班课测试。作业正文......
  • 2023/12/17
    ​EnglishLuli​2023/12/17 单词phenomenon(现象):指一种普遍出现或引起注意的事物或事件。hypothesis(假设):指对某事物或现象的推测性解释,需要进一步验证。facilitate(促进):指使事情更加容易或顺利进行。coherent(连贯的):指事物或想法逻辑清晰,相互关联,构成一个整体。......