指针的学习总结2

使用 ArcGIS Pro 和 Google Earth Engine 可视化地表温度 在这项研究中,利用 Landsat 热数据通过各种方法检查了 2013 年和 2023 年恰纳卡莱省的地表温度变化。使用了 NDVI、大气层顶部、亮度温度、植被比例和地表温度等公式。研究结果表明,从热图像中获得的数据,特别是地表温度(LST),是土地解释的重要资源。恰纳卡莱 — 土耳其(土耳其)使用 ArcGIS 程序和 Google Earth Engine 对不同季节的卫星图像进行分析。 阅读详情

父函数调用子函数时,要想子函数能修改父函数中的内容,前提必须满足两步:1.传指针;2.解引用。

现在通过交换两个变量的数值来理解指针。

1.编写第一个交换函数

如下

void Swap1(int a,int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;

}

int main()
{
int a = 10;
int b = 20;
printf("%d,%d\n",a,b);

Swap1(a,b);

printf("%d,%d\n",a,b);

return 0;
}
此时会出现a和b并没有交换成功。


为什么呢?因为这个时候主函数和swap1函数里面的a、b不相同,从各自的地址不同可知。

2.编写第二个交换函数

void Swap2(int *p1,int *p2)
{
int *tmp;
tmp = p1;
p1 = p2;
p2 = tmp;
}

int main()
{
int a = 10;
int b = 20;
printf("%d,%d\n",a,b);

Swap2(&a,&b);

printf("%d,%d\n",a,b);

return 0;
}

此时还是没有成功,是因为什么呢,传指针到子函数去了,但是没有解引用。

3.编写第三个函数

void Swap3(int *p1,int *p2)
{
int *tmp ; // 野指针,悬挂指针:没有指向有效的地址
*tmp = *p1;//崩溃
*p1 = *p2;
*p2 = *tmp;
}
此时会出现崩溃现象,是因为设置了野指针,野指针不知道其所存的地址可以不可以访问,就直接访问,肯定会引起崩溃。

4.编写第四个函数 

void Swap(int *p1,int *p2)
{
int tmp = *p1;
*p1 = *p2 ;
*p2 = tmp;
}

这次成功了,a和b的值终于交换了,是因为一传指针,二解引用,而且没有野指针。


天池长期赛:二手车价格预测(422方案分享) 本次比赛是一次很好的锻炼数据挖掘能力的入门赛,从EDA-数据清洗-特征工程-模型调参-模型融合,能够完整的学习到大数据的分析和挖掘,值得历练。 阅读详情

相关推荐

在Wincc8.0的Wincc 3D Control控件中使用3D模型

如果之前没有在Blender中自定义光照,EnableBackground属性选择“是”,Wincc 3D Control会按一个均匀的光照强度渲染。Wincc8.0更新后提供了一个Wincc 3D Control控件来显示3D图像,但是该控件实际体验下来现阶段还存在功能不足、运行不稳定的问题。再把导出的dae文件复制进Wincc项目的GraCS文件夹中,文件名称复制进控件的SceneFile属性里。选择编辑模式,全选模型,点击网格→分离→按材质,分离出不同的部件(不同的部件最好使用不同的材质)。

ghoring的博客 7135

关于指针的一点心得

如何通过指针同被调函数修改主调函数的普通变量的值 实参必须为普通变量的地址 形参必须为指针变量 在被调函数中通过   *形参名=   的方式修改主调函数中相关变量的值 关于多级指针和跨函数使用内存 void f(int ** q) { int i=5; *q=&i; } int main() { int * p; f(&p); } *p等价...

K 的小想法 648

Android Studio运行报错: failed to load include path ……\platforms\android-35\android.jar的最细解决方案

【代码】Android Studio运行报错: failed to load include path ……\platforms\android-35\android.jar的最细解决方案。

2401_86789230的博客 2万+

C语言指针的学习心得

C语言是一门重要的计算机基础课程,而指针是C语言的精华,指针在C语言中具有十分高的地位,它应用范围广,使用灵活等特点时常让我们感到困惑。掌握指针的使用方法是一个C语言程序员应该具有的基础技能。在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。 指针学习首先应掌握其基本概念。指针即地址,地址即指针。程序运行工程中...

IDBBBai的博客 6564

ChatBI告别“NL2SQL依赖症”!从准确率50%到90%,3大技术路线+4个企业案例拆解核心玩法

摘要: ChatBI通过自然语言交互实现数据民主化,其核心是“语义理解+数据执行+知识沉淀”的全链路能力,而非单一的NL2SQL技术。行业采用三大技术路线提升准确率:专有知识库(提升30%)、指标标签语义层(准确率85%)、JSON中间层(多轮对话提升25%)。数据执行方案包括NL2SQL、NL2API等,需结合场景选择。企业落地需解决四大痛点:跨表查询准确率低(引入拓扑图)、模糊查询(用户干预机制)、响应慢(预计算缓存)、多轮对话(上下文池)。Spring AI Alibaba提供轻量级集成方案,助力企业

weixin_52610848的博客 1656

FPGA编译加速实战:6大可落地的Vivado优化策略

FPGA编译本质上是NP-hard约束满足问题求解,而非传统软件编译;Vivado作为时序驱动的硬件实现工具链,其耗时瓶颈集中在Implementation阶段的布局布线(PnR)与逻辑优化。理解这一原理,才能跳出‘加线程’‘升版本’等表面优化,转向精准时序约束、增量编译、物理锚点控制、IP配置精简等工程级干预。这些技术手段直接作用于Vivado的Tcl执行流与底层求解空间,显著压缩搜索范围、减少无效迭代——尤其适用于Zynq/UltraScale等中大型项目(LUT > 80K、多时钟域、DDR/PCIe

weixin_34226182的博客 413

C语言指针的学习总结

指针是什么? 在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。 画图来加深理解 展示代码: #include<stdio.h> int main...

-五月的博客 1613

Matlab子图排版终极指南:从tight_subplot到tiledlayout的实战对比

本文深入对比Matlab中两大子图排版工具:社区经典函数tight_subplot与官方现代布局管理器tiledlayout。针对默认subplot产生的子图间距与边缘距离问题,详细解析两者的设计哲学、参数控制与实战应用,帮助用户根据版本与需求选择最佳方案,实现高效、精确且美观的多子图排版。

weixin_29048309的博客 360

交换两个数值的问题

(1)# include<stdio.h>void Swap_err1(int a , int b){ int tmp; tmp = a; a = b; b = tmp;}int main(){ int a = 10; int b = 20; Swap_err1(a , b); printf("%d,%d\n", a , b); return 0;}结果为:错误原因:Swap_err1...

cyy_0802的博客 318

5分钟看懂LTE注网全流程:从PLMN选择到小区驻留的log分析技巧

本文深入解析了LTE终端从开机到成功驻留小区的完整流程,重点分享了基于QXDM和QCAT工具的log分析实战技巧。文章详细拆解了PLMN选择、System/Band扫频、小区搜索与同步、系统消息解析及驻留等关键步骤,并提供了高频问题场景的排查思路,帮助网络优化工程师快速定位终端侧、射频环境或网络配置问题。

app77的博客 432

华为OD机试_2025 B卷_模拟消息队列(Python,100分)(附详细解题思路)

时间排序:确保事件处理顺序正确消费者管理:集合操作高效维护状态优先级实现:利用消费者ID自然排序边界处理:正确处理空消费者情况。

测试工程师的成长之路 1120

指针学习总结

一个指针变量只能指向同一个类型的变量,如不能忽而指向一个整型变量,忽而指向一个双精度型变量 如果已执行“pointer = &a”那么&\*pointer表示&a(思考下为什么)

weixin_44824326的博客 632

第一章:基础知识 - 概念与基础,理解什么是功耗

电源管理与功耗调优:实战项目经验分享

坚韧与专注 885

深入学习指针2

hello,我又来了,今天有我继续带领大家深入的学习指针,通过上次的学习,我们已经了解到了指针的基本概念,指针如何使用,指针使用的益处,以及一些相关的概念,那今天我们就继续深入的学习,加深对指针的理解,还没有看上期的uu,记得补功课哟 ,链接在这里了!

2302_79964175的博客 1345

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【嵌入式学习2】指针

内存:房间地址:房间号表示所声明变量为指针类型【指针变量的类型比这个变量的类型多一个*】

weixin_60546365的博客 972

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

指针学习2

主要是指针数组、数组指针、函数指针的学习,以及二重指针、二维数组的学习。 一、指针数组与数组指针 1、概念 指针数组的实质是一个数组,这个数组中存储的内容全部是指针变量。数组指针的实质是一个指针,这个指针指向的是一个数组。 2、分析指针数组与数组指针的表达式:int *p[5]; int (*p)[5]; int *(p[5]); (1)一般规律:int *p;(

主要记录嵌入式学习与开发过程。 601

指针学习 2

目录 1、指针作为函数的参数 1)引言 2)引用调用机制 2、通过交换地址来改变变量的值 代码段1 代码段2 代码段3 思考 3、例题练习 4、本章存疑 1、指针作为函数的参数 1)引言 在C语言中,函数的参数包括形参和实参,两者的类型要保持一致。 例如:函数的参数可以是整形,实型(浮点型),字符型…… 也可以是指针类型! 指针类型的函数实参为函数的地址,形参为指针。 2)引用调用机制 调用函数不能改变实参变量的值,但可改变实参指针变量所指向 的变量的值。这样.

dayday_0724的博客 870

指针深入学习-2

首先要知道的是[ ]优先级是高于*的,所以第一段代码,pa先和[ ]结合构成一个数组,int*是数组内存放的元素类型,而第二段代码,用()与pa结合,保证先让*与pa结合成一个指针,[3]是指向数组的元素个数,int是指向数组元素的类型,所以上面的是指针数组,下面的是数组指针。首先我们知道,指针指向的是一个地址,所以函数应该也是有地址的,运行下面代码,我们可以知道,函数也是有地址的,且函数名就是它的地址,可以不使用取地址符。数组指针变量用来存放数组地址的,那如何获得数组的地址呢,可以用&arr。

2401_87804979的博客 710

指针学习2,交换,多级指针

​#include<stdio.h> void huhuan_1(int, int); void huhuan_2(int*, int*); void huhuan_3(int*, int*); ​ int main() { int a = 3,b=5; huhuan_3(&a, &b); printf("a=%d,b=%d", a, b); ​ return 0; } void huhuan_1(int p , int q)//不能完成交换功能 { int

weixin_46465448的博客 184

指针的学习2

所以形参访问的数组和实参的数组是同一个数组;形参的数组是不会再单独创建数组空间的,所以形参的数组是可以省略掉数组的大小的。数组就是数组,是一块连续的空间(数组的大小和数组元素个数和元素类型都有关系)一维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。存放指针的数组,指针数组的每个元素都是用来存放地址(指针)的。(整个数组的地址和数组首元素的地址是有区别的)冒泡排序的核心思想就是:两两相邻的元素进行比较。&数组名,这里的数组名表示整个数组,取出的是。,计算的是整个数组的大小,单位是字节。

2301_80802299的博客 546

指针2学习

如何规避:如果明确知道指针指向哪⾥就直接赋值地址,如果不知道指针应该指向哪⾥,可以给指针赋值NULL. NULL 是C语⾔中定义的⼀个标识符常量,值是0,0也是地址,这个地址是⽆法使⽤的,读写该地址 会报错。缺点:assert() 的缺点是,因为引⼊了额外的检查,增加了程序的运⾏时间,一般可在debug中使用;上面代码中,并不会对a,b进行交换,是因为实参传递给形参的时候,形参会单独创建⼀份临时空间来接收实参,对形参的修改不影响实 参;因此,调函数中的变量值来实现计算,就可以采⽤传值调⽤。

xuhedidida的博客 222

指针学习(2)

1、类型转换 2、&符号的使用 3、“带*类型” 的特征探测:求值 4、用指针操作数组

空舟的博客 215

C语言指针学习总结2

从这张图可以清晰的看到&arr[0]和&arr[0]+1相差四个字节,arr和arr+1相差四个字节,这是因为%arr[0]和arr都是首元素地址,+1就是跳过一个字节。但是&arr和&arr+1相差四十个字节,这就是因为&arr是数组的地址,+1操作是针对于数组整个加一。我们来类比一下,整型数组是存放整型的数组,字符数组是存放字符的数组,那么指针数组就是存放指针的数组啦。*pp 通过对pp中的地址进⾏解引⽤,这样找到的是 p ,*pp 其实访问的就是 p。为什么这里打印的三个地址是相同的呢?

2301_81817211的博客 311

指针学习(2)

那么在函数内部我们写 sizeof(arr) 计算的是⼀个地址的大小(单位字节)而不是数组的大小(单位字节)。正是因为函数的参数部分是本质是指针,所以在函数内部是没办法求的数组元素个数的。我们发现在函数内部是没有得到真确的结果的,是因为数组传参的时候,传递的是数组名,也就是说数组传参,本质上传递的是数组首元素的地址。尤其注意的是:输出结果时,*(p+i)也可以写成*(arr+i)和arr[i],*(arr+i)和arr[i]是等价的。(整个数组的地址和数组首元素 的地址是有区别的)

2401_85711575的博客 984

如何学习指针(2)

如果数组str[i]是一个指针数组,存放的是二维数组中每一行的首元素的地址,那么就可以通过一行的首元素的地址来访问这一行的所有数据。&arr取出的是全体数组的大小,虽然printf函数打印出来的也是首元素的地址,但是这里强调的是数组名arr代表的首元素地址和&arr代表的全体数组的地址是有区别的,在加减整数运算是有所体现。sizeof(arr)中arr代表的是全体数组元素,即计算的是数组全部的字节,而非只计算首元素的字节。数的参数部分是本质是指针,所以在函数内部是没办法求的数组元素个数的。

2301_79819250的博客 531

指针的学习(2)

冒泡排序的核心思想就是:两两相邻的元素进行比较。

Aurora_wsj的博客 333
上一篇: 指针的学习总结
下一篇: 字符数组的学习总结
sihuo521
博客等级 码龄18年 16粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值