今天,我是第一次开始写博客,也是首次写关于C/C++语言有关的东西。我原来一直都是利用C来编码,偶尔也会写一些小C++的东西来消遣娱乐一下,打发时间,最近,开发任务基本都是用C++来码的,所以,有空,就会重新抱着书再看一看,突然,在看书时意识到,平时读书时,一些书本上简单的语言,能够很快就明白其意识,在脑子与眼睛中一闪而逝,都不太在意,在平时编辑代码的时候,就会有疏漏,容易造成一些不必要的Bug,其实,这些Bug如果细心一点是可以避免的,也能有效的提示编码的效率与质量。所以,从今天开始,我将会把自己看书时,” 咬文嚼字“ 的一些理解写下来,以便后期查看,与大家分享。
本次,主要是对于函数的传递参数中,关于常规参量、数组参量、指针参量 的区别,都知道,在函数头与函数原型中,数组int a[]与指针 int *a 的含义是一样的。函数参量,在传递常规参量时,函数将使用该变量的拷贝;但在传递数组(或指针)时,函数将使用原始的数组(或变量)。
输入参量比较的函数:
1. int Function_Parameter1(int a); //常规参量 int a;
2. int Function_Parameter2(int a[]); //数组参量 int a[];
3. int Function_Parameter3(int *a); //指针参量 int *p;
其中:2和3的输入参量在函数头中含义是一致的。
现在附上代表进行比较:
-
#include <iostream>
-
-
int Function_Parameter1(int a)
-
{
-
int ia=5;
-
a=a+ia;
-
std::cout<<"Function_Parameter 1:a="<<a<<std::endl;
-
ia= a;
-
return ia;
-
}
-
-
int Function_Parameter2(int a[])
-
{
-
int ia=5;
-
a[0]=a[0]+ia;
-
std::cout<<"Function_Parameter 2:a[0]="<<a[0]<<std::endl;
-
ia= a[0];
-
return ia;
-
}
-
-
int Function_Parameter3(int *a)
-
{
-
int ia=5;
-
*a=*a+ia;
-
std::cout<<"Function_Parameter 3:*a="<<*a<<std::endl;
-
ia=*a;
-
return ia;
-
}
-
-
void test1()
-
{
-
int a=32;
-
int *p=NULL;
-
int ra=0;
-
p=&a;
-
-
std::cout<<"Test1:[value]: a="<<a<<", *p="<<*p<<std::endl;
-
-
std::cout<<"IN:\ta="<<a<<std::endl;
-
ra=Function_Parameter1(a);
-
std::cout<<"OUT:\ta="<<a<<"\t\t\tra="<<ra<<std::endl;
-
-
std::cout<<"IN:\ta="<<a<<",\t*p="<<*p<<std::endl;
-
ra=Function_Parameter1(*p);
-
std::cout<<"OUT:\ta="<<a<<",\t*p="<<*p<<"\t\tra="<<ra<<std::endl;
-
-
std::cout<<"IN:\ta="<<a<<std::endl;
-
ra=Function_Parameter2(&a);
-
std::cout<<"OUT:\ta="<<a<<"\t\t\tra="<<ra<<std::endl;
-
-
std::cout<<"IN:\ta="<<a<<",\t*p="<<*p<<std::endl;
-
ra=Function_Parameter2(p);
-
std::cout<<"OUT:\ta="<<a<<",\t*p="<<*p<<"\t\tra="<<ra<<std::endl;
-
-
std::cout<<"IN:\ta="<<a<<std::endl;
-
ra=Function_Parameter3(&a);
-
std::cout<<"OUT:\ta="<<a<<" ,\t\t\tra="<<ra<<std::endl;
-
-
std::cout<<"IN:\ta="<<a<<",\t*p="<<*p<<std::endl;
-
ra=Function_Parameter3(p);
-
std::cout<<"OUT:\ta="<<a<<",\t*p="<<*p<<"\t\tra="<<ra<<std::endl;
-
std::cout<<"------------------------------------------------"<<std::endl;
-
}
-
-
void test2()
-
{
-
int a[1]={32};
-
int *p=NULL;
-
int ra=0;
-
p=a;
-
-
std::cout<<"Test2:[value]: a[0]="<<a[0]<<", *p="<<*p<<std::endl;
-
-
std::cout<<"IN:\ta[0]="<<a[0]<<std::endl;
-
ra=Function_Parameter1(a[0]);
-
std::cout<<"OUT:\ta[0]="<<a[0]<<"\t\t\tra="<<ra<<std::endl;
-
-
std::cout<<"IN:\ta[0]="<<a[0]<<",\t*p="<<*p<<std::endl;
-
ra=Function_Parameter1(*p);
-
std::cout<<"OUT:\ta[0]="<<a[0]<<",\t*p="<<*p<<"\tra="<<ra<<std::endl;
-
-
std::cout<<"IN:\ta[0]="<<a[0]<<std::endl;
-
ra=Function_Parameter2(a);
-
std::cout<<"OUT:\ta[0]="<<a[0]<<"\t\t\tra="<<ra<<std::endl;
-
-
std::cout<<"IN:\ta[0]="<<a[0]<<",\t*p="<<*p<<std::endl;
-
ra=Function_Parameter2(p);
-
std::cout<<"OUT:\ta[0]="<<a[0]<<",\t*p="<<*p<<"\tra="<<ra<<std::endl;
-
-
std::cout<<"IN:\ta[0]="<<a[0]<<std::endl;
-
ra=Function_Parameter3(a);
-
std::cout<<"OUT:\ta[0]="<<a[0]<<" ,\t\tra="<<ra<<std::endl;
-
-
std::cout<<"IN:\ta[0]="<<a[0]<<",\t*p="<<*p<<std::endl;
-
ra=Function_Parameter3(p);
-
std::cout<<"OUT:\ta[0]="<<a[0]<<",\t*p="<<*p<<"\tra="<<ra<<std::endl;
-
}
-
-
int main()
-
{
-
test1();
-
test2();
-
return 0;
-
}
编译运行之后的结果如下:
阅读(105) | 评论(0) | 转发(0) |