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

news/2024/12/14 11:58:20/文章来源:https://www.cnblogs.com/incamellia/p/18606485

作业信息

作业归属课程:2024-2025-1-计算机基础与程序设计
作业要求:2024-2025-1计算机基础与程序设计第十二周作业
作业目标:《C语言程序设计》第11章
作业正文:2024-2025-1 20241329 《计算机基础与程序设计》第十二周学习总结

教材学习内容总结

《C语言程序设计》第11章

1. 指针和一维数组间的关系

  • 数组名作为指针常量
    数组名在表达式中代表数组首元素的地址,相当于一个指向数组首元素的指针。如,对于一维数组 int a[5];a 等价于 &a[0]

  • 指针变量指向数组

    • 可以定义一个指针变量指向数组的首地址,如 int *p = a;
    • 通过指针变量可以访问和修改数组元素,如 *(p + i) 等价于 a[i]
  • 指针算术运算

    • 指针加减整数表示移动元素,如 p + 1 表示指向下一个元素。
    • 两个指针相减表示元素个数,如 p2 - p1 表示两个指针之间的元素个数。
  • 指针与数组的等价性

    • 数组写法和指针写法在某些情况下具有等价效力,如 a[i] 等价于 *(a + i)
  • 数组名与指针的区别

    • 数组名是一个常量指针,不能被修改。
    • 指针变量可以被重新赋值,指向不同的内存地址。

2. 指针和二维数组间的关系

  • 二维数组的存储结构

    • 二维数组在内存中以行和列的方式存储,元素地址连续。
    • 如,对于二维数组 int a[2][3];a 等价于 &a[0][0]
  • 数组名作为指针常量

    • 二维数组名在表达式中代表数组首元素的地址,相当于一个指向数组首元素的指针。
    • 如,a 等价于 &a[0][0]
  • 行指针和列指针

    • 行指针存储行地址,例如 int (*p)[3] = a;p 指向第一行。
    • 列指针直接指向元素,例如 int *q = a[0];q 指向第一行的第一个元素。
  • 指针算术运算

    • 指针加减整数表示移动元素,如 p + 1 表示指向下一个行。
    • 如,*(p + 1) 表示指向第二行的第一个元素,*(*(p + 1) + 1) 表示指向第二行的第二个元素。
  • 数组指针

    • 数组指针是指向数组的指针,定义时需指定数组类型和元素个数。
    • 如,int (*p)[3] = a;p 指向一个包含3个整数的一维数组。

3. 指针数组及其应用

  • 指针数组的声明

    • 指针数组是用指针作为数组的基类型,元素为指针类型的数组。
    • 如,char *ptr[5]; 表示一个包含五个字符指针的数组。
  • 指针数组的应用

    • 指针数组常用于字符串数组和函数指针数组的实现。
    • 如,char *strs[3] = {"hello", "world", "C语言"};
  • 动态内存分配

    • 可以使用 malloc()calloc() 函数动态分配内存,用于创建指针数组。
    • 如,char **ptrs = (char**)malloc(5* sizeof(char *));
  • 内存管理

    • 使用 free() 函数释放动态分配的内存,避免内存泄漏。
    • 如,free(ptrs);

4. 动态数组

  • 动态内存分配

    • 动态数组是在程序运行时根据需要分配和释放内存的数组。动态数组和动态内存分配允许程序在运行时根据需要调整大小,避免了预定义大小的限制。
    • 使用 malloc()calloc()realloc() 等函数在堆上分配内存。
    • 如,int *arr = (int*)malloc(10 * sizeof(int));arr = (int *)realloc(arr, 20* sizeof(int));
  • 创建动态数组

    • 例如,int *arr = (int *)malloc(n * sizeof(int));分配了一个包含n个int元素的动态数组。
  • 内存管理

    • 需要使用free()函数手动释放动态分配的内存,忘记释放内存可能导致内存泄漏。
  • 动态二维数组

    • 创建动态二维数组需要两步分配:先分配行指针数组,然后为每行分配内存。
    • int **arr = (int **)malloc(m * sizeof(int *));
      for (int i = 0; i < m; i++) {arr[i] = (int *)malloc(n * sizeof(int));
      }
      
  • 释放动态二维数组

    • 需要先释放每行的内存,然后释放行指针数组。
    • for (int i = 0; i < m; i++) {free(arr[i]);
      }
      free(arr);
      

基于AI的学习

image

参考资料

  • 《C语言程序设计》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/852474.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四六级规则及策略

四六级规则:1写作,2听力,3阅读和翻译满分710,加权后425分(也就是分数到百分之60)及格。加权,就是英语最后成绩不仅取决于卷面分还取决于在参考人群中的排名 策略: 先section C再翻译,最后section B。section A随便蒙。

阅记-横向优化-CA-《HPC-一文彻底搞懂并发编程与内存屏障》intel

目录Momory Ordering9.2.3.2 Neither Loads Nor Stores Are Reordered9.2.3.3 Stores Are Not Reordered With Earlier Loads9.2.3.4 Loads May Be Reordered with Earlier Stores (intel x64架构下唯一会有memory reorder的情况)内存屏障的实现 参考:HPC(高性能计算第一篇):一…

阅记-横向优化-底层架构-《HPC-一文彻底搞懂并发编程与内存屏障》

目录Momory Ordering9.2.3.2 Neither Loads Nor Stores Are Reordered9.2.3.3 Stores Are Not Reordered With Earlier Loads9.2.3.4 Loads May Be Reordered with Earlier Stores (intel x64架构下唯一会有memory reorder的情况)内存屏障的实现 参考:HPC(高性能计算第一篇):一…

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

2024-2025-1 20241322 《计算机基础与程序设计》第十二周学习总结 作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12这个作业的目标 《C语言程序设计》第11章作业…

20222415 2024-2025-1 《网络与系统攻防技术》实验七实验报告

1.实验内容 1.实验内容 (1)简单应用SET工具建立冒名网站 (2)ettercap DNS spoof (3)结合应用两种技术,用DNS spoof引导特定访问到冒名网站。 2.实验过程 (1)简单应用SET工具建立冒名网站 systemctl start apache2开启apache2服务,然后输入setoolkit,进入set工具后选…

网站修改费,网站维护和更新的费用如何计算

网站修改费用因项目复杂度和工作量而异。一般考虑以下因素:工作量:根据修改内容的多少和难度评估工作量。 时间成本:根据开发人员的小时费率计算总费用。 技术难度:涉及复杂功能或特殊技术的项目费用较高。 维护周期:长期维护合同通常会有优惠。 客户需求:根据客户的具体…

修改网站图片内容,网站图片管理技巧

修改网站图片内容通常涉及上传新图片和更新HTML或CSS文件,以下是一些具体步骤:上传新图片:将新图片文件上传到网站服务器,通常放在 images 文件夹中。 记下新图片的路径,例如 /images/new-image.jpg。修改HTML文件:打开网站的HTML文件,找到需要替换的图片的 <img>…

记录我的第一份实习-猎头

以下是本人自2024-10-15日入职wisest talent至11-30日的一些记录,历时正正好1个半月 累计300+电话量,日均10+电话数,简历阅览量保守估计2200+ 推荐总数:55位面试总数:29位入职总数:3位开票业绩:20w+以上当然并不光是自身努力的结果,更多的还是经过几位相当优秀的leader…

在线进制转换-浮点数16进制转换

在线进制转换工具;浮点数转16进制;分享一个在线进制转换工具,浮点数转十六进制得在线转换工具; 网址:https://www.bais.top/tools/hexconvert/ 浮点数转16进制在线转换网址 float转十六进制; 在线10进制转16进制;使用很方便,能够进行多种进制转换;

firemonkey主界面

firemonkey主界面firemonkey主界面 本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/18606484