指针和数组

首先明确一点,指针之间的加减不是简单的加减,而是只的是指针所指向元素个数的加减,也就是说是元素个数的偏移


int *p11 = (int *)0xfff4;
int *p12 = (int *)0xfff0;
cout<<p11-p12<<endl;


输出应该是4/4 =1


1. 一维数组

int a[5];
cout<<sizeof(a)<<" "<<sizeof(&a)<<" "<<sizeof(&a[0])<<endl;

//output:20 4 4

//a是一个数组,所以a的长度5*sizeof(int);&a表示数组的指针,指针的长度都是4


cout<<a<<" "<<&a<<" "<<&a[0]<<endl;

//output:0027FBAC  0027FBAC  0027FBAC

//数组和指针不同之处在于,编译器并没有为数组a分配一个空间存储其地址,所以a就表示这个数组的地址;&a表示是数组的指针,而这个数组是5个元素的数组,&a表示一个指向五元数组的指针

cout<<a+1<<" "<<&a +1 <<" "<<&a[0]+1<<endl;

//output:0027FBB0  0027FBC0  0027FBB0

//a在数值上是数组的首地址,a+1就是第二个元素的地址,0027FBAC+4 = 0027FBB0  ;a不是int *p,但是为了帮助理解可以把a看做int *p,则a+1就是其所指元素的偏移1,

//&a可以看成是int (*)[5],所以&a+1,就是&a所指向元素的偏移1,而&a所指向的元素是一个5元的数组,所以&a+1 = 0x0027FBAC+5*4 =0x0027FBAC+0x14  = 0x 0027FBC0  


2 .二维数组

在内存中二维数组也是一维数组的排列方式

int a[3][4]

但是编译器是这样理解的:

a是一个3个元素的数组,而元素里存的是4元数组的地址

a+1表示第二个元素,此时a+1还是指向“4元数组”的指针,*(a+1)变为指向int的指针,但是a+1和*(a+1)的值相同,譬如都是002BF7E4

所以a[1][2]的地址可以有以下几种表示方式:

out<<&a[1][2]<<" "<<&a[0][0] +1*4+2<<" "<< (*(a+1)+2)<<endl;


还有一个比较绕的程序(红色字体表示可以替代):

int calendar[12][31];
int (*month)[31];
for (month = calendar;month<calendar+12/*&calendar[12]*/;++month)
{
int *day;
for (day = *month;day<*month +31/*&(*month)[31]*/;++day)//在这里就可以深刻理解到本来month就是一个指向31个int数组的指针,month的元素就是数组,month偏移的单位也是这个数组大小,*month就是表示31个int的数组,此时*month表示指向int 的指针
{
*day  = 0;
}
}






【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)内容概要:本文介绍了基于蒙特卡洛拉格朗日方法的电动汽车充电站有序充电调度优化方案,重点在于采用分散式优化策略应对分时电价机制下的充电需求管理。通过构建数学模型,结合不确定性因素如用户充电行为电网负荷波动,利用蒙特卡洛模拟生成大量场景,并运用拉格朗日松弛法对复杂问题进行分解求解,从而实现全局最优或近似最优的充电调度计划。该方法有效降低了电网峰值负荷压力,提升了充电站运营效率与经济效益,同时兼顾用户充电便利性。 适合人群:具备一定电力系统、优化算法Matlab编程基础的高校研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。 使用场景及目标:①应用于电动汽车充电站的日常运营管理,优化充电负荷分布;②服务于城市智能交通系统规划,提升电网与交通系统的协同水平;③作为学术研究案例,用于验证分散式优化算法在复杂能源系统中的有效性。 阅读建议:建议读者结合Matlab代码实现部分,深入理解蒙特卡洛模拟与拉格朗日松弛法的具体实施步骤,重点关注场景生成、约束处理与迭代收敛过程,以便在实际项目中灵活应用与改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值