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

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

时间:2024-12-14 12:11:13浏览次数:8  
标签:指向 int 元素 2024 2025 内存 数组 20241329 指针

作业信息

作业归属课程: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

参考资料

标签:指向,int,元素,2024,2025,内存,数组,20241329,指针
From: https://www.cnblogs.com/incamellia/p/18606485

相关文章

  • 20222415 2024-2025-1 《网络与系统攻防技术》实验七实验报告
    1.实验内容1.实验内容(1)简单应用SET工具建立冒名网站(2)ettercapDNSspoof(3)结合应用两种技术,用DNSspoof引导特定访问到冒名网站。2.实验过程(1)简单应用SET工具建立冒名网站systemctlstartapache2开启apache2服务,然后输入setoolkit,进入set工具后选择1,社会工程学攻击再选2,......
  • 2024-2025-1 20241322 《计算机基础与程序设计》第十二周学习总结
    2024-2025-120241322《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12这个作业的目标《C语言程序设计》......
  • 20222411 2024-2025-2 《网络与系统攻防技术》实验八实验报告
    1.实验内容1.1实验内容及要求(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎......
  • 2024 csp-j 小木棍
    #include<iostream>usingnamespacestd;intmain(){intn;cin>>n;intx[n+5];for(inti=1;i<=n;i++){cin>>x[i];}for(inti=1;i<=n;i++){if(x[i]==1){cout<<-1;......
  • 2024153读书笔记|《春烂漫:新平摄影作品选》——跳绳酷似人生路,起落平常,进退平常,莫惧征
    2024153读书笔记|《春烂漫:新平摄影作品选》——跳绳酷似人生路,起落平常,进退平常,莫惧征途万里长《春烂漫:新平摄影作品选》作者新平,2019.12.25年读完的小书,当时就觉得挺不错,今天2024.12.10再次读依然喜欢。诗词配摄影图片的一本书,主要是春天的百花开,桃花梨花牡丹玉兰油......
  • 2024149读书笔记|Hans的阿狸五部曲——成长的路上分离在所难免
    2024149读书笔记|Hans的阿狸五部曲——成长的路上分离在所难免1.《阿狸和小小云》2.《阿狸和小玉》3.《阿狸·呓语》4.《阿狸和弯月亮》5.《阿狸永远站》1.《阿狸和小小云》阿狸遇到了小小云☁️,它们一起陪伴彼此,早餐午餐晚餐,一起洗澡做伴儿,一起度过春夏秋冬,很......
  • 2024年12月GESPC++三级真题解析
    一、单选题(每题2分,共30分)题目123456789101112131415答案BDAADBCAADDCDCA1.下列二进制表示的十进制数值分别是()[10000011]原=()[10000011]补=()A.-125,-3B.-3,-125C.-3,-3D.-125,-125【答案】B【考纲知识点】原码和补码的计算及转换【......
  • noip2024 游记
    day-inf前情提要由于csp的超常发挥,喜提SC-0001。day0浮躁。浮躁。浮躁。但这并不是那么严重,因为其实csp前我也挺浮躁的(不过和csp不一样的是入睡前非常兴奋。由于害怕被叠失眠debuff,来了半粒安眠药(人生第一次吃安眠药qwq),神奇的是吃了以后一下就睡着了。day1这天......
  • 202222314 2023-2024-2 《网络与系统攻防技术》实验七实验报告
    2022223142023-2024-2《网络与系统攻防技术》实验七实验报告1.实验内容1.1实验要求本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有(1)简单应用SET工具建立冒名网站(2)ettercapDNSspoof(3)结合应用两种技术,用DNSspoof引导特定访问到冒......
  • 2024-12-13新闻
    2024-12-13新闻作业板块语文三行译做准备默写三行译读书笔记数学《公能勤思》\(P_{204}\simP_{206}\)英语《高分突破》卷子一张设计广告轶事版刘军蔚骨折了刘军蔚昨天晚上背书包绊倒,右手手臂骨折了。获得外号:铁肘侠。没交错题本的被数学课代表和周老师联合......