| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 【C语言】二级指针的深度理解,峰值的寻找(每日小细节004) -> 正文阅读 |
|
[C++知识库]【C语言】二级指针的深度理解,峰值的寻找(每日小细节004) |
目录 1.二级指针我们都知道指针变量是保存变量地址的
?这里的p1就是一个指针变量(一级指针)因为前面只有一个 * 啊 ? 事实上我们口头说的p1就是个“指针”其实我们暗指的就是指针变量 真正的指针就是地址,而指针是存放指针(地址)的变量 就好比我们说10是整型,但是int a=10;a就是把整型变量,里面存放的是整型数据10 既然是一个变量就有自己的地址,类型,空间 指针变量当然不例外 比如指针变量p1的地址是分配好的,仅从上面的代码我们看不出来 类型很显然就是char *,char是指 指针指向的数据类型,就是a的类型(char),*是指p是一个指针 空间内保存的就是a的地址 那么
p2就是二级指针变量 地址依然无法直接看出来 类型是char** 因为p2指向的? p1? 类型是char*,而另一个*代表p2是指针 空间就是p1的地址? ? ?所以对p2一次解引用就指向p1 对p1一次解引用(只能解引用一次)是a的地址,就是指向a 对p2再次解引用,即对p1解引用,找到的还是a 更加相信的指针内容请看 https://blog.csdn.net/weixin_71138261/article/details/126287297?spm=1001.2014.3001.5501 现在看看这个题目吧 找出1 2 3 4 哪几处有程序错误?? 首先1就有错误 应该是p==NULL或者num<=0 成立一个就return void类型的函数里面return就和循环里面的break一样 所以不是&&而是||? 1错误 此外&str不对,str本来就是指针变量,我们是把字符放在str指向的空间里,而不是把str保存的空间(一个地址)改变 所以直接写str就可以? ?3错误 注:在函数返回之后没有释放内存,但是这不会导致程序错误,只会导致内存泄漏。此题选程序错误所以不算 ? 2.峰值我们发现这个题好简单啊,只要从第二个元素开始遍历,这个元素比旁边两个都大就可以了 但是这样是片面的 如果是1 2 3 4 5峰值不在2~4!!! 9? 8? 7? 6? 5? 峰值同样不在内部 所以不要看他给的例子画的图,就是故意诱惑你,写出一般情况 解决问题有两个手段 : 1.先写一般情况,发现有错,把特殊情况穷举出来? 2.直接在“莽夫自杀式”做题之前把各种情况大概思考到位,再动手 先看第一个方法 首先如果数组长度是0,没有元素直接返回0就可(把索引值设为0,最后返回索引) 然后写出else的代码,发现报错,因为只有两个数字根本不能按照 nums[i] > nums[i - 1] && nums[i] > nums[i + 1] 这样比较 所以又补充出else if,当只有两个元素,直接返回最大值(把索引设为在最大数的下标) 最后最后又没过,因为 如果是1 2 3 4 5峰值不在2~4!!! 9? 8? 7? 6? 5? 峰值同样不在内部 这些情况没考虑 所以在最后加上,如果是顺序/逆序,直接把索引设置为长度-1
显然这样打补丁很麻烦,万一特例很多这样根本不行 方法二,观察发现,峰值不一定是在内部,很可能在边界
创作不易,感谢观看 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:40:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |