写作背景:
在做心脏仿真并行优化时,更新变量的大函数update()竟然不起作用,所有states值完全不变,苦寻半小时后拍脑袋想起来在大一维数组传递进update()后为了方便起了别名,比如double volt = cvar[cidx*NVAR+0],然后后续就直接更新局部变量volt了,但该volt并不能返回更新原大数组,只在局部范围内存活,所以导致所有states值一直没变。
遂想起该用地址传递而非值传递,改成了double &volt = cvar[cidx*NVAR+0],大功告成。深入了解周边知识,对指针和地址传递有了更深入的体会。不过这些都该是大一的皮毛基础知识了。anyway,分析如下代码:
#include<iostream>
using namespace std;
//值传递
void change1(int n){
cout<<"值传递--函数操作地址"<<&n<<endl; //显示的是拷贝的地址而不是源地址
n++;
}
//引用传递
void change2(int & n){
cout<<"引用传递--函数操作地址"<<&n<<endl;
n++;
}
//指针传递
void change3(int *n){
cout<<"指针传递--函数操作地址 "<<n<<endl;
*n=*n+1;
}
int main(){
int n=10;