上后谈爱情

导航

 

1.形参:定义函数时候,函数名括号中变量名,不调用时候并不占有内存中存储单元,叫虚拟参数;实参与形参转变属于

值传递过程(只能由实参传递给形参们,不能从形参传递给实参),实参与形参互相独立

实参:主函数调用子函数中,函数名后面括号中参数

2.C++提供一种内嵌函数(子函数内嵌主函数中) 用inline修饰,不能用switch语句

3. 函数重载:由于有不同数据类型进行处理,重载为不同数据类型挑选出合适函数;同一个函数名定义多个函数,函数形参实参数据类型不同

因此为了避免程序发生臃肿,采用Template形式。类似于Java 中 AnyType类型

 


java 中参数传递:值传递和引用传递: 形参的值都是通过对实参值进行拷贝过来的,在引用传递过程都是对实参地址进行拷贝在传递给形参。

特别是在引用传递过程中:引用数据类型 数组,类,接口;基本数据类型是值传递,引用数据类型是引用传递(地址传递)

String 字符串数据具有final特性。

你自己有一把钥匙,别人拿着你这把钥匙进行复制新钥匙 ,拿着新钥匙进入家里进行折腾,所有一般引用传递过程中发现在 子函数中值修改主函数变化--非string类型变量。

 

  • 但是java中String 值在被创建之后不能被修改的;对String对象str做任何修改时候等同于 重建一个新的对象 新的地址指向形参中值,与实参Str不在同一个地址。
  • 主函数中str地址中值没有发生变化,输出还是AAA;

 

 


C++中值传递:值传递,引用传递f(&a ,&b)和指针传递f(*a,*b):参考,指针性函数:指针指向该形参函数的地址

 1 // test.cpp : Defines the entry point for the console application.
 2 //
 3 
 4 #include "stdafx.h"
 5 #include <iostream>
 6 
 7 using namespace std;
 8 
 9 //值传递
10 void swap1(int p,int q)
11 {
12     int temp;
13     temp=p;
14     p=q;
15     q=temp;
16 }
17 
18 //指针传递,函数体内只有指针值的变化
19 void swap2(int *p,int *q)
20 {
21     int temp;
22     temp=*p;
23     *p=*q;
24     *q=temp;
25 }
26 
27 //指针传递,函数体内只有指针的变化
28 void swap3(int *p,int *q)
29 {
30     int *temp;
31     temp=p;
32     p=q;
33     q=temp;
34 }
35 
36 //引用传递
37 void swap4(int &p,int &q)
38 {
39     int temp;
40     temp=p;
41     p=q;
42     q=temp;
43 }
44 
45 int main()
46 { 
47     int a=1,b=2;
48     swap1(a,b);
49     //swap2(&a,&b);
50     //swap3(&a,&b);
51     //swap4(a,b);
52     cout<<a<<"  "<<b<<endl;
53     return 0;
54 }
  • 值传递:

 

  •  指针传递:swap2函数指针中的发生了交换,swap3指针修改,地址值没有发生变化;传
  • 注意swap2函数完成了值得交互,在swap3函数并没有进行值得修改:因为在形参中修改的是  p指针指向b地址 q指针指向a地址,修改p和q指针指向位置,没有修改a地址中的值,,但是在主函数中a指针指向a地址,b指针指向b地址,swap2中是p指向的地址中的值(就是a)与q指向的地址中的值(b)交换,所以swap2执行完后a和b的值是交换了的P指向a地址。
  •  

 引用传递:C++中引用传递,对形参操作等于实参操作,传递就是地址,不是副本

 

posted on 2017-02-28 16:19  上后谈爱情  阅读(327)  评论(0编辑  收藏  举报