函数和数组2个章节部分学习总结

1、之前对函数参数传递指针没有理解到位,以为像传其它的数据一样,只是数据的一份拷贝,然后不修改原始的数据,函数参数如果是传递的指针,传递给函数是指针的一份拷贝,可以通过指针间接访问数据,从而得到修改原始数据,反正不能把指针变量本身传递给一个函数,
如果把这个函数里面的进行在堆区分配内存空间,只不过是指针的拷贝的这个指针分配了内存,如果不返回,编译器会自动分配和回收,无法使用,实际指针还是没有分配内存,如果想要想要给实际指针分配内存,我们可以在函数里面分配内存了然后return这个指针,或者用二级指针作为参数也行,二级指针分配的内存是真正给了指针变量本身,然后我们绝对不可以在函数返回堆区的指针,因为函数退出时,它的栈也就被清除了,之后其内容会被别的局部变量、函数调用保存的上下文等信息替换掉,所以返回的这个栈偏移就失去意义了。

2、之前不知道在函数参数中,声明数组可以不指定长度,不声明是合法的,因为函数不为数组元素分配内存,调用时把实参数组名里面的常量地址传给形参数组名,就是说形参数组名保存的就是实参数组名里面存的地址。这样在被调用函数内部,形参数组就指向了和实参数组名指向的同一个数组。

3、函数递归调用自己的时候,比如递归调用自己的时候下面还有值打印,这个值应该是当前调用的这个函数的值,而不是之前挂载的值,之前我这里理解不太深刻,后面在答辩文档中会给出相应的Demo.

4、之前不知道递归的开销非常大,因为返回调用自己会为局部变量分配内存空间,一般还是少用。

C和指针之数组和函数部分总结相关推荐

  1. 指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序

    指针 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名 ...

  2. C语言指针,数组,函数

    下面6个声明语句分别声明的是什么? 如果不能快速地分清,我们就来一起来学习一下.首先我们先了解一下标识符,标识符是标识某个实体的一个符号,用于给变量.常量.函数.语句块等命名.上面6个声明语句中有6个 ...

  3. 黑马程序员匠心之作|C++教程从0到1入门编程(60 指针-const修饰指针61 指针-指针和数组62 指针-指针和函数63 指针-指针配合数组和函数的案例)

    黑马程序员匠心之作|C++教程从0到1入门编程(60 指针-const修饰指针61 指针-指针和数组62 指针-指针和函数63 指针-指针配合数组和函数的案例) 一.60 指针-const修饰指针 二 ...

  4. 指针、数组、函数阶段小结

    引子:数据在内存中是如何存储的,又是如何读取的?内存编号就是内存的地址(内存中每个字节都有一个编号,即地址) 1.概念: 地址:内部存储器的编号,称为地址.如变量a的位置编号,变量b的位置都是指针. ...

  5. 水滴石穿C语言之指针、数组和函数

    基本解释 1.指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址):数组的本质则是一系列的变量. 2.数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容 ...

  6. C语言指针这一篇够了(一万二千字,包含指针与数组,函数指针等详解)

    目录 零.前言 一.指针的定义 二.指针类型的意义 1.指针类型决定了指针解引用时一次访问几个字节. 2.指针类型决定了指针加减整数时的步长 三.野指针 1.未初始化的指针 2.指针的越界访问 3.指 ...

  7. C语言程序设计 练习题参考答案 第七章 (2) 指针与数组 main函数形参

    /*  7.16 实现测试字符串长度函数strlen() */ #include "stdio.h" int strlen(char *p); void main() {     ...

  8. 指针08:指针配合数组和函数

    #include<iostream> using namespace std; //冒泡排序函数 参数1:数组的首地址 数组2:数组长度 void bubbleSort(int * arr ...

  9. C++_const修饰指针_指针和数组_指针和函数_指针配合数组和函数案例_用指针数组实现冒泡排序---C++语言工作笔记024

    然后我们再来看一下const修饰指针 这里第一种是常量指针 可以看到 const int * p =&a 这个p就是一个常量指针,可以看到,常量指针,指明了,这个指针指向的值是一个常量不能修改 ...

最新文章

  1. Kotlin——初级篇(六):空类型、空安全、非空断言、类型转换等特性总结
  2. struct 类型指针技巧
  3. SQL SERVER中一些常见性能问题的总结
  4. 解决在工具栏Chrome图标上点击右键会显示“常去网站”和“最后关闭网站”的问题...
  5. 【转】utf-8的中文是一个汉字占三个字节长度
  6. 在d3中使用2D.js获取图形间的交点
  7. GitHub与Git区别,Git与SVN区别,Git国内镜像下载
  8. 采用cookie简单实现文章顶/踩功能
  9. 【SQL合集-SQL必知必会】
  10. Java获取时间戳,System.currentTimeMillis() 和 System.nanoTime() 哪个更快?
  11. 阿帕奇服务器搭建网站,使用Apache搭建Web网站服务器
  12. 25篇最新CV领域综述性论文速递!涵盖15个方向:目标检测/图像处理/姿态估计/医学影像/人脸识别等方向...
  13. 毕业设计游戏类网站设计静态页面基于html,div+css+jquery(含源码)
  14. SOEM 源码解析 ecx_FPWRw
  15. 动态规划(Dynamic Programing)背包——01背包
  16. error C2448: 'Unknown' : function-style initializer appears to be a function definition
  17. e2label设置文件系统的卷标
  18. python算法入门书籍推荐书目_10本算法入门书籍推荐
  19. python移动文件到另一个文件夹若有同名文件更改文件名_python 复制、移动文件到指定目录并修改名字...
  20. 【C语言】例3.5 求方程的根

热门文章

  1. 《Redis核心技术与实战》学习总结(1)
  2. OutOfMemoryException异常解析
  3. 记一次 .NET 某智慧水厂API 非托管内存泄漏分析
  4. C# FileSystemWatcher文件监控实例
  5. 如何在 C# 中使用 反射
  6. .net5+nacos+ocelot 配置中心和服务发现实现
  7. 项目开发中经常有一些被嫌弃的小数据,现在全丢给 FastDFS
  8. 别“躺”着了,赶紧把「复盘」做起来
  9. 了解.NET中的垃圾回收
  10. Asp.Net Core Ocelot Consul 微服务