燃烧的指针(二)

news2024/10/1 5:25:34

🌈个人主页:小田爱学编程
🔥 系列专栏:c语言从基础到进阶
🏆🏆关注博主,随时获取更多关于c语言的优质内容!🏆🏆


😀欢迎来到小田代码世界~
😁 喜欢的小伙伴记得一键三连哦 ૮(˶ᵔ ᵕ ᵔ˶)ა


目录

一. 解决疑问

二.数组名的理解

二.使用指针访问数组

三.传参的本质

四.一维数组传参的本质

五.排序

 六.assert断言

七.二级指针

 八.指针数组

九.字符指针变量

十.数组指针

十一.函数指针

十二.函数指针数组

十三.烧脑问题


一. 解决疑问

上次,我们提出了在函数中我们学过函数,形参是实参的一份临时拷贝,也就是在函数中的形参再怎么改也不会影响实参,那为啥会出现下面的情况呢?

😀如果你想知道这个问题的答案,那么你看完这篇文章,你一定会发现问题的答案的。

二.数组名的理解

🌏数组名就是数组首元素的地址

  ☀特例:1.sizeof中单独放数组名,即sizeof[arr]中的不是数组的首个,而是整个数组

  特例:2. &arr这里的数组是整个数组

又有:在这里看出这三种方式没有区别,那区别究竟在哪里?

  从上述例子我们可以看出,数组首个首元素的地址和整个数组的地址就会有明显的差别

二.使用指针访问数组

🌏(*p+i)=(*arr+i)=(p+i)=(arr+i)

🌏p[i]=i[p]=arr[i]=*p=*i

三.传参的本质

😀为啥这个不起作用呢?

形参是实参的一份临时拷贝,但是本质是啥呢?

 由打开调试可知,a,b,x,y的地址不一样,这就比如我和你在不同的房间(这个房间离得很远),我和你也不认识,那当然你做什么肯定不会影响我呀,这里的同样是一个道理,我们这样紫就更加的加深了我们对形参是实参的一份临时拷贝的理解了,我们现在学习了指针,就可以进行修改喽

四.一维数组传参的本质

🌏⼀维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。

五.排序

迈入算法的大门,从排序开始,从冒泡排序开始:

视频:

C语言冒泡排序和选择排序(这应该是讲的最详细的一个视频了)

思路:

排序的构建方法有很多,一种就是比较相邻的元素

举例:

代码:👨‍🚀但是,如果一组数是0,1,2,3,4,9,8,7,6,5按照升序去排序,如果本身有的数字为有序,那么再去       比较会导致效率降低:我们引入count计数器,发现按照上方的算法排序,需要45次

👨‍🌾我们可以用flag进行判断,先假设有序,如果有序就排序,没序就跳出循环

 六.assert断言

  #define NDEBUG
  #include <assert.h>

 👨‍🌾assert表示判断的意思

 👨‍🚀加入宏#define NDEBUG,可以自动取消assert断言的使用(在release版本)会出现

七.二级指针

 🌏二级指针变量存放一级指针变量的地址:int**pa=&a

 🌏**pa ->可以找到a并把a的值给改变

 八.指针数组

 👨‍🚀是一群指针放在数组里面,构成的指针数组

 🐎指针数组举例:int* parr[3] = {arr1, arr2, arr3};

      可以用指针数组来模拟二维数组的实现:

九.字符指针变量

int main()
{
 char ch = 'w';
 char *pc = &ch;
 *pc = 'w';
 return 0;

}

 🌏字符指针变量不可变,在内存中申请空间时同一串常量申请的空间相同

十.数组指针

👉数组指针:指向数组的指针,eg int(*pa)[10]=arr,解释:pa是数组名,*p是指这个是指针变量,       有十个元素,且指向的对象是int类型,准确的说其类型是:int(*)[10] ,或这个是个数组指         针,类型是int(*)[10]int(*)[10]

 👉[]的优先级要⾼于*号的,若是int*p[10]=arr,则是指针数组

 🌏⼆维数组传参本质上也是传递了地址,传递的是第⼀⾏这个⼀维数组的地址

 🌏void test(int (*p)[5], int r, int c)

 🌏⼆维数组传参,形参的部分可以写成数组,也可以写成指针形式,同样一维数组等同

十一.函数指针

🐟指针指向的对象是函数

🐟格式:

 🐟举例:

十二.函数指针数组

 👨‍🚀 地址存到⼀个数组中,那这个数组就叫函数指针数组

 👨‍🚀int (*parr1[3])();

十三.烧脑问题

 通过以上的学习:想必大家已经对这两个问题可以做出很好的解释:

 😀(*(void (*)())0)(); 

 😀void (*signal(int , void(*)(int)))(int); 


👍如果想知道答案,请持续关注🥇系列专栏:c语言从基础到进阶

🎁🎁🎁今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,您的支持就是我前进的动力!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MacBook自带邮箱设置

MacBook自带邮箱设置 邮件—->偏好设置 服务器设置 收件服务器(POP) 用户名: xxxxxxliang 密码: ***** 主机名:mail.xxx.com.cn 自动管理连接设置 勾上 发件服务器(SMTP) 帐户:xxx.com.cn 用户名:xxxxxxliang 密码:**** 主机名:mail.xxx.com.cn 注意: 自动管理连接设置 不…

transformer和vit学习笔记

以下记录自己对transformer的学习笔记&#xff0c;可能自己看得懂【久了自己也忘了看不懂】&#xff0c;别人看起来有点乱。以后再优化文档~ 小伙伴请直接去看学习资源&#xff1a; Transformer的理解T-1_哔哩哔哩_bilibili 首先&#xff0c;时序处理&#xff1a;一些模型的出…

go 引用fork后的模块的两种方式(replace和工作区)

很久没更新了&#xff0c;一是工作琐碎&#xff0c;二是处在舒适区&#xff0c;但最近看着身边的同事一个个离开&#xff0c;危机感骤然而生&#xff0c;不得不重拾书本&#xff0c;毕竟生活还得继续&#xff0c;不卷是不可能的&#xff0c;谁让我们生在这个卷中卷的国度&#…

组件冲突、data函数、组件通信

文章目录 1.组件的三大组成部分 - 注意点说明2.组件的样式冲突&#xff08;用 scoped 解决&#xff09;3.data是一个函数4.组件通信1.什么是组件通信&#xff1f;2.不同的组件关系 和 组件通信方案分类 5.prop详解prop 校验①类型校验②完整写法&#xff08;类型&#xff0c;非…

QtRVSim(二)一个 RISC-V 程序的解码流程

继上一篇文章简单代码分析后&#xff0c;本文主要调研如何实现对指令的解析运行。 调试配置 使用 gdb 工具跟踪调试运行。 c_cpp_properties.json 项目配置&#xff1a; {"name": "QtRvSim","includePath": ["${workspaceFolder}/**&quo…

如何在Shopee平台上进行家居类目的选品

在Shopee平台上进行家居类目的选品是卖家们提高销售业绩和市场竞争力的重要步骤。通过深入了解市场趋势、竞争对手、消费者偏好和供应链等方面的信息&#xff0c;卖家可以制定有效的选品策略。本文将介绍一些在Shopee平台上进行家居类目选品时的策略和注意事项。 先给大家推荐…

分布式因果推断在美团履约平台的探索与实践

美团履约平台技术部在因果推断领域持续的探索和实践中&#xff0c;自研了一系列分布式的工具。本文重点介绍了分布式因果树算法的实现&#xff0c;并系统地阐述如何设计实现一种分布式因果树算法&#xff0c;以及因果效应评估方面qini_curve/qini_score的不足与应对技巧。希望能…

pytest参数化

一、pytest.mark.parametrize介绍 pytest.mark.parametrize(argnames, argvalues, indirectFalse, idsNone)参数说明&#xff1a; argnames: 一个或多个参数名&#xff0c;用逗号分隔的字符串&#xff0c;如"arg1,arg2,arg3"&#xff0c;参数名与用例入参数一致。 a…

Flink问题解决及性能调优-【Flink根据不同场景状态后端使用调优】

Flink 实时groupby聚合场景操作时&#xff0c;由于使用的是rocksdb状态后端&#xff0c;发现CPU的高负载卡在rocksdb的读写上&#xff0c;导致上游算子背压特别大。通过调优使用hashmap状态后端代替rocksdb状态后端&#xff0c;使吞吐量有了质的飞跃&#xff08;20倍的性能提升…

Rabbitmq调用FeignClient接口失败

文章目录 一、框架及逻辑介绍1.背景服务介绍2.问题逻辑介绍 二、代码1.A服务2.B服务3.C服务 三、解决思路1.确认B调用C服务接口是否能正常调通2.确认B服务是否能正常调用A服务3.确认消息能否正常消费4.总结 四、修改代码验证1.B服务异步调用C服务接口——失败2.将消费消息放到C…

【Web】CTFSHOW SQL注入刷题记录(上)

目录 无过滤注入 web171 web172 web173 web174 web175 时间盲注 写马 过滤注入 web176 web177 web178 web179 web180 web181-182 web183 web184 web185-186 web187 web188 web189 web190 布尔盲注 web191 web192 web193 web194 堆叠注入 web195 …

对于gzip的了解

gzip基本操作原理&#xff1a;通过消除文件中的冗余信息&#xff0c;使用哈夫曼编码等算法&#xff0c;将文件体积压缩到最小。这种数据压缩方式在网络传输中发挥了巨大作用&#xff0c;减小了传输数据的大小&#xff0c;从而提高了网页加载速度。 静态资源 Vue Vue CLl修改v…

Task04:DDPG、TD3算法

本篇博客是本人参加Datawhale组队学习第四次任务的笔记 【教程地址】https://github.com/datawhalechina/joyrl-book 【强化学习库JoyRL】https://github.com/datawhalechina/joyrl/tree/main 【JoyRL开发周报】 https://datawhale.feishu.cn/docx/OM8fdsNl0o5omoxB5nXcyzsInGe…

【原神游戏开发日志3】登录和注册有何区别?

版权声明&#xff1a; ● 本文为“优梦创客”原创文章&#xff0c;您可以自由转载&#xff0c;但必须加入完整的版权声明 ● 文章内容不得删减、修改、演绎 ● 本文视频版本&#xff1a;见文末 ● 相关学习资源&#xff1a;见文末 前言 ● 这是我们原神游戏开发日记的第三期 ●…

web服务和前端交互相关的上中游业务技术知识点梳理

文章目录 前言一、业务API网关鉴权Cookie Session 实现 API 鉴权API Key API Secrettoken 机制实现 API 鉴权 二、Tomcat、Servlet、SpringMVC总结 前言 可能之前在学校里面做的很多东西是纯后端的&#xff0c;不会涉及到太多和前端交互的细节&#xff0c;很多新手对前后端交…

深入浅出 diffusion(3):pytorch 实现 diffusion 中的 U-Net

导入python包 import mathimport torch import torch.nn as nn import torch.nn.functional as F silu激活函数 class SiLU(nn.Module): # SiLU激活函数staticmethoddef forward(x):return x * torch.sigmoid(x) 归一化设置 def get_norm(norm, num_channels, num_groups)…

php项目下微信小程序对接实战问题与解决方案

一.实战问题与方案总结 1.SQL查询条件是一组数&#xff0c;传参却是一个字符串导致报错&#xff0c;如下 SQLSTATE[HY093]: Invalid parameter number (SQL: select count(*) as aggregate from car_video where province_id in (1492) and city_id in (1493) and county_id …

Nginx编译安装以及负载均衡配置(Ubuntu 22.04)

目录 Nginx编译安装以及负载均衡配置 Ubuntu 22.04.1 LTS 编译安装 nginx-1.22.1 1.安装依赖包 2. 下载nginx 3. 编译安装 报错解决 解决问题2 4.安装 5启动Nginx&#xff1a; 负载均衡 负载均衡算法 轮询 加权负载均衡 ip_hash算法 算法进行配置演示 加权负载均衡 轮询 IP 哈希…

ES文档索引、查询、分片、文档评分和分析器技术原理

技术原理 索引文档 索引文档分为单个文档和多个文档。 单个文档 新建单个文档所需要的步骤顺序&#xff1a; 客户端向 Node 1 发送新建、索引或者删除请求。节点使用文档的 _id 确定文档属于分片 0 。请求会被转发到 Node 3&#xff0c;因为分片 0 的主分片目前被分配在 …

[MQ]常用的mq产品图形管理web界面或客户端

一、MQ介绍 1.1 定义 MQ全称为Message Queue&#xff0c;消息队列是应用程序和应用程序之间的通信方法。 如果非要用一个定义来概括只能是抽象出来一些概念&#xff0c;概括为跨服务之间传递信息的软件。 1.2 MQ产品 较为成熟的MQ产品&#xff1a;IBMMQ&#xff08;IBM We…