主题:理解传值和传址
说一下我理解的传值和传址
函数调用时使用啦一个临时的stack,他把函数名,参数表,返回值
按右向左压入栈中当函数结束活动栈死掉
参数传递是用实参的值初始化函数参数栈
传值方法:
int func(int k)
{
函数处理是它的本地拷贝值并不改变实参
k=k+10;
//
rerurn k;
}
void main(void)
{
int c,b,a=10;
b=func(a);//结果b=20;
c=a;//c=10;
return 0;
}
传址方法1:
int func(int *k)
{
函数处理是它的本地拷贝地址并改变实参
*k=*k+10;
//
rerurn *k;
}
void main(void)
{
int c,b,a=10;
b=func(&a);//结果b=20;
c=a;//c=20;
return 0;
}
传址方法2:
int func(int &k)
{
函数处理是它的本地拷贝地址并改变实参
k=k+10;
//
rerurn *k;
}
void main(void)
{
int c,b,a=10;
b=func(a);//结果b=20;
c=a;//c=20;
return 0;
}
传址用于附加返回值(改变实参值)
另一个用于传递大的类型如数组,类对象
防止本地拷贝占用大量内存,降低效率
要传递数组,类对象但又不想改变他们
的值
可以这样定义
int func(const int* a)
int func(const int& a)
望大虾指教
函数调用时使用啦一个临时的stack,他把函数名,参数表,返回值
按右向左压入栈中当函数结束活动栈死掉
参数传递是用实参的值初始化函数参数栈
传值方法:
int func(int k)
{
函数处理是它的本地拷贝值并不改变实参
k=k+10;
//
rerurn k;
}
void main(void)
{
int c,b,a=10;
b=func(a);//结果b=20;
c=a;//c=10;
return 0;
}
传址方法1:
int func(int *k)
{
函数处理是它的本地拷贝地址并改变实参
*k=*k+10;
//
rerurn *k;
}
void main(void)
{
int c,b,a=10;
b=func(&a);//结果b=20;
c=a;//c=20;
return 0;
}
传址方法2:
int func(int &k)
{
函数处理是它的本地拷贝地址并改变实参
k=k+10;
//
rerurn *k;
}
void main(void)
{
int c,b,a=10;
b=func(a);//结果b=20;
c=a;//c=20;
return 0;
}
传址用于附加返回值(改变实参值)
另一个用于传递大的类型如数组,类对象
防止本地拷贝占用大量内存,降低效率
要传递数组,类对象但又不想改变他们
的值
可以这样定义
int func(const int* a)
int func(const int& a)
望大虾指教