指向指针的指针与指针引用

  本文仅作为关于指向指针的指针与指针引用相关的内容的总结,如有不对的地方,欢迎交流。

  如果想改变指针本身而不是它所指向的对象(i),一般有以下两种函数声明的方式:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 void f(int** j) { *j++; }
 6 void g(int*& j) { j++; }
 7 
 8 int main()
 9 {
10     int i = 0;
11     int* p = &i;
12 
13     int size = sizeof(int);
14     cout << "sizeof int:" << size << endl << endl;
15 
16     cout << "f(int** j): " << endl;
17     cout << "p " << p << endl;
18     cout << "i " << i <<endl;
19     f(&p);
20     cout << "p " << p << endl;
21     cout << "i " << i <<endl;
22 
23     i = 0;
24     p = &i;
25 
26     cout << "g(int*& j): " << endl;
27     cout << "p " << p << endl;
28     cout << "i " << i << endl;
29     g(p);
30     cout << "p " << p << endl;
31     cout << "i " << i << endl;
32 
33     system("pause");
34     return 0;
35 }

运行结果如下:

我们看到,调用g(int*& j),p的输出正常,而调用f(int** j)的运行结果却不符合预期,正常情况下p应该为下一个4字节的地址,这是为什么?

问题出在函数定义中,void f(int** j) { *j++; }中++的运算优先级高于*,所以并没有出现预期的结果,将定义改为:void f(int** j) { (*j)++; }

再次运行代码:

这次结果符合了预期。

分析:当函数的形参为指针时,在函数内部会复制实参指针,因而形参(ip)在函数内部的任何改变都无法影响实参。然而,传入的指针形参却可以改变指针指向的对象(*ip)的值。

1 void reset(int* ip)
2 {
3     ip = 0;    //形参在函数内部的改变无法影响实参
4     *ip = 0;   //改变了ip所指向对象的值
5 }

当函数的形参为指向指针的指针,如本例void f(int** j) { (*j)++; }中,是如何改变j指向的对象呢?其中j,*j,i之间的指向关系如下

参数j是一个指向指针的指针,说白了就是*j的地址,j指向的对象就是*j(对象i的地址)。将j传入函数内部,产生j的拷贝j',改变j‘指向的对象的值,就改变了*j,从而达到目的,看到指针本身*j的内容增加了,而不是它指向的对象(i)增加了。

转载于:https://www.cnblogs.com/coffeecat/archive/2012/08/06/2620678.html

考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参调度等方面的有效性,为低碳能源系统的设计运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发仿真验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值