Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1841
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-03 10:41
文章分类
文章存档

2015年(2)

我的朋友
最近访客

分类: C/C++

2015-10-31 19:32:00

      今天,我是第一次开始写博客,也是首次写关于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的输入参量在函数头中含义是一致的。
    
     现在附上代表进行比较:

点击(此处)折叠或打开

  1. #include <iostream>

  2. int Function_Parameter1(int a)
  3. {
  4.    int ia=5;
  5.    a=a+ia;    
  6.         std::cout<<"Function_Parameter 1:a="<<a<<std::endl;
  7.   ia= a;
  8.    return ia;    
  9. }

  10. int Function_Parameter2(int a[])
  11. {
  12.    int ia=5;
  13.    a[0]=a[0]+ia;
  14.         std::cout<<"Function_Parameter 2:a[0]="<<a[0]<<std::endl;    
  15.    ia= a[0];
  16.    return ia;
  17. }

  18. int Function_Parameter3(int *a)
  19. {
  20.    int ia=5;
  21.    *a=*a+ia;
  22.     std::cout<<"Function_Parameter 3:*a="<<*a<<std::endl;
  23.    ia=*a;
  24.    return ia;
  25. }

  26. void test1()
  27. {
  28.         int a=32;
  29.         int *p=NULL;
  30.         int ra=0;
  31.          p=&a;

  32.     std::cout<<"Test1:[value]: a="<<a<<", *p="<<*p<<std::endl;

  33.     std::cout<<"IN:\ta="<<a<<std::endl;         
  34.          ra=Function_Parameter1(a);
  35.     std::cout<<"OUT:\ta="<<a<<"\t\t\tra="<<ra<<std::endl;

  36.     std::cout<<"IN:\ta="<<a<<",\t*p="<<*p<<std::endl;    
  37.          ra=Function_Parameter1(*p);
  38.     std::cout<<"OUT:\ta="<<a<<",\t*p="<<*p<<"\t\tra="<<ra<<std::endl;

  39.     std::cout<<"IN:\ta="<<a<<std::endl;
  40.          ra=Function_Parameter2(&a);
  41.     std::cout<<"OUT:\ta="<<a<<"\t\t\tra="<<ra<<std::endl;

  42.     std::cout<<"IN:\ta="<<a<<",\t*p="<<*p<<std::endl;
  43.          ra=Function_Parameter2(p);
  44.     std::cout<<"OUT:\ta="<<a<<",\t*p="<<*p<<"\t\tra="<<ra<<std::endl;

  45.     std::cout<<"IN:\ta="<<a<<std::endl;    
  46.        ra=Function_Parameter3(&a);
  47.     std::cout<<"OUT:\ta="<<a<<" ,\t\t\tra="<<ra<<std::endl;

  48.     std::cout<<"IN:\ta="<<a<<",\t*p="<<*p<<std::endl;    
  49.     ra=Function_Parameter3(p);
  50.     std::cout<<"OUT:\ta="<<a<<",\t*p="<<*p<<"\t\tra="<<ra<<std::endl;
  51.     std::cout<<"------------------------------------------------"<<std::endl;    
  52. }

  53. void test2()
  54. {
  55.     int a[1]={32};
  56.     int *p=NULL;
  57.     int ra=0;
  58.     p=a;

  59.     std::cout<<"Test2:[value]: a[0]="<<a[0]<<", *p="<<*p<<std::endl;

  60.     std::cout<<"IN:\ta[0]="<<a[0]<<std::endl;         
  61.          ra=Function_Parameter1(a[0]);
  62.     std::cout<<"OUT:\ta[0]="<<a[0]<<"\t\t\tra="<<ra<<std::endl;

  63.     std::cout<<"IN:\ta[0]="<<a[0]<<",\t*p="<<*p<<std::endl;    
  64.          ra=Function_Parameter1(*p);
  65.     std::cout<<"OUT:\ta[0]="<<a[0]<<",\t*p="<<*p<<"\tra="<<ra<<std::endl;

  66.     std::cout<<"IN:\ta[0]="<<a[0]<<std::endl;
  67.          ra=Function_Parameter2(a);
  68.     std::cout<<"OUT:\ta[0]="<<a[0]<<"\t\t\tra="<<ra<<std::endl;

  69.     std::cout<<"IN:\ta[0]="<<a[0]<<",\t*p="<<*p<<std::endl;
  70.          ra=Function_Parameter2(p);
  71.     std::cout<<"OUT:\ta[0]="<<a[0]<<",\t*p="<<*p<<"\tra="<<ra<<std::endl;

  72.     std::cout<<"IN:\ta[0]="<<a[0]<<std::endl;    
  73.        ra=Function_Parameter3(a);
  74.     std::cout<<"OUT:\ta[0]="<<a[0]<<" ,\t\tra="<<ra<<std::endl;

  75.     std::cout<<"IN:\ta[0]="<<a[0]<<",\t*p="<<*p<<std::endl;    
  76.     ra=Function_Parameter3(p);
  77.     std::cout<<"OUT:\ta[0]="<<a[0]<<",\t*p="<<*p<<"\tra="<<ra<<std::endl;
  78. }

  79. int main()
  80. {
  81.     test1();
  82.     test2();
  83.     return 0;
  84. }
编译运行之后的结果如下:
    
阅读(105) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Cent0s 64位系统 qt安装(一)

给主人留下些什么吧!~~