学了很长时间C/C++有时指针方面还是有点乱。

希望大神发现如果下面有不对的地方请指出。我发现之所以我乱就是因为中文表述不准确的问题,比如 ,地址值和地址

#include <iostream>
#include <string> using namespace std; void swap1(string* str1,string* str2){// 1.对象指针作为函数参数 //影响实参
cout<<&str1<<" "<<&str2<<endl;//打印地址值
string temp = *str1; *str1=*str2; *str2=temp;
cout<<"str1="<<*str1<<"\tstr2="<<*str2<<endl;//打印值
} void swap2(string &str1,string &str2){//2.引用作为函数参数 //影响实参 形参和实参是同一个对象 传引用是不开辟内存空间的 所以比传指针好其实传的就是实参本身
cout<<&str1<<" "<<&str2<<endl;//打印地址值
string temp = str1; str1=str2; str2=temp;
cout<<"str1="<<str1<<"\t str2="<<str2<<endl;//打印值
} void swap3(string str1,string str2){//3.对象作为函数参数 //传的是值 不影响实参
cout<<&str1<<" "<<&str2<<endl;//打印地址值
string temp = str1; str1=str2; str2=temp;
cout<<"str1="<<str1<<"\tstr2="<<str2<<endl;//打印值
} void main(){
string str1("现在"); string str2("过去");//值存在常量池 cout<<&str1<<" "<<&str2<<endl;//地址和调用swap1打印的地址不一样
swap1(&str1,&str2);//使用传 地址值 的方式传递str1和str2的地址值 &取地址(自我感觉:传的是栈空间指向常量区的地址)
//------------------------------------
//cout<<&str1<<" "<<&str2<<endl;//地址和调用swap2打印的地址一样,说明就是同一个对象
//swap2(str1,str2);(自我感觉:传的栈空间的地址值)
//------------------------------------
//cout<<&str1<<" "<<&str2<<endl;//地址和调用swap3打印的地址不一样
//swap3(str1,str2);(自我感觉:传的是常量区的值)
}

C/C++语言中的函数参数传参三种对比的更多相关文章

  1. (转)在网页中JS函数自动执行常用三种方法

    原文:http://blog.sina.com.cn/s/blog_6f6b4c3c0100nxx8.html 在网页中JS函数自动执行常用三种方法 在网页中JS函数自动执行常用三种方法 在HTML中 ...

  2. 在网页中JS函数自动执行常用三种方法

    在网页中JS函数自动执行常用三种方法 在HTML中的Head区域中,有如下函数: <SCRIPT   LANGUAGE="JavaScript">   function ...

  3. char *与const char **函数参数传参问题

    传参方法 ## 函数 extern void f2 ( const char ** ccc ); const char ch = 'X'; char * ch_ptr; const char ** c ...

  4. vue之路由传参三种基本方式

    现有如下场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取数据. 父组件中: <li v-for="article in articles" @click= ...

  5. 网页中JS函数自动执行常用三种方法

    (1)最简单的调用方式,直接写到html的body标签里面:        <body onload="myFunction()"></body>      ...

  6. C# 多线程传参 三种实例

    //using Thread to download files //1111111111111111 foreach (var str in listDownloadPdf) { //string ...

  7. C语言中的函数

    C语言中的函数 目录 概述——对函数的理解 C语言中函数的定义和声明 函数允许的参数类型 函数允许的返回类型 递归 概述 由于有些代码段在编写程序的时候经常会用到,此时我们为了减少代码文件的长度和增加 ...

  8. JS中给函数参数添加默认值(多看课程)

    JS中给函数参数添加默认值(多看课程) 一.总结 一句话总结:咋函数里面是可以很方便的获取调用函数的参数的,做个判断就好,应该有简便方法,看课程. 二.JS中给函数参数添加默认值 最近在Codewar ...

  9. C语言中的可变参数-printf的实现原理

    C语言中的可变参数-printf的实现原理 在C/C++中,对函数参数的扫描是从后向前的.C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出 ...

随机推荐

  1. 微信APP支付整体流程记录备忘

      支付整体流程见文档:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3   商户系统和微信支付系统主要交互说明:     步骤1: ...

  2. IP 地址 与 DNS

    IP地址转化 192.168.10.1 十进制,点分十进制地址 32位二进制数字序列,四段,八位 十进制与二进制转换00000000 = 000000001 = 2 * 0 = 100000010 = ...

  3. node中的ajax提交小例子

    我们看一个HTML5页面中通过AJAX请求的方式获取HTTP服务器返回数据的代码示例.由于我们把服务器的端口指定为1337,并将从端口为80的网站中运行HTML5页面,因此这是一种跨域操作,需要在HT ...

  4. 阶段性总结(PHP-Session)

    PHP Session PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置.Session 变量存储单一用户的信息,并且对于应用程序中的 ...

  5. Mysql--可用的 MySQL 产品和专业服务

    一.MySQL Community Edition(社区版):MySQL Community Edition is the freely downloadable version of the wor ...

  6. Python - 第一个 Django 项目

    Django 的安装: pip3 install django==1.11.11 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ d ...

  7. 用嵌套List实现DataGrid的主从表显示

    //首先构造嵌套List,也就是一个list在另一个list中充当成员//如:referModels 在res中充当成员var res = totalAffectedMedels.Select(c = ...

  8. nginx的下载和安装

    安装 下载必要组件 nginx下载地址 http://nginx.org/en/download.html  pcre库下载地址,nginx需要[解析正则] http://sourceforge.ne ...

  9. c++ 字符输入读取

    cin.clear()重置输入流 cin.get()锁住屏幕直到获取输入 while(cin) cin.get(ch) 方法返回的是一个cin对象,istream类提供了可以将istream对象转换为 ...

  10. Mellanox infinoband RDMA SDP

    IPoIB Internet Protocol over InfiniBand 就是指利用物理IB网络(IB卡,线缆,交换机,更甚者IB3层交换)通过ip协议进行连接,并进行数据传输! SDP Soc ...