学了很长时间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. docker 学习(十) 容器常用命令

    1  docker run -it ubuntu:15.10 /bin/bash 如果有ubuntu:15.10这个镜像,就run,否则会从dockerhub下载,并run. -it 一般连用,表示按 ...

  2. 08_java超市管理系统

    超市管理系统功能介绍 * A:超市管理系统功能介绍 * a: 显示主菜单 ============欢迎光临ItCast超市============ 1: 货物 清单 2: 添加货物 3: 删除货物 4 ...

  3. RabbitMQ_direct

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @version: @author: morgana @licens ...

  4. 转载:详解在visual studio中使用git版本系统(图文)

    很多人已经在使用git(或正在转移到git上),在github.com上,也看到不少国内同学的开源项目,非常不错.但相关教程似乎不多,所以趁着我自己的开源项目源码托管(https://github.c ...

  5. Android Studio 2.3.3 添加ksoap2的引用(拒绝网上其他的忽悠),也适用于添加其他Jar的引用

  6. Redis实战——Redis的pub/Sub(订阅与发布)在java中的实现

    借鉴:https://blog.csdn.net/canot/article/details/51938955 1.什么是pub/sub Pub/Sub功能(means Publish, Subscr ...

  7. JBPM4.4学习笔记

    1.JBPM4表说明: JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表 JBPM4_EXECUTION 流程实例表 JBPM4_HIST_ACTINST ...

  8. Unity Mecanim 动画系统

    1. Animator 组件 Controller:使用的Animator Controller文件. Avatar:使用的骨骼文件. Apply Root Motion:绑定该组件的GameObje ...

  9. pip / conda 导出和安装环境组件 requirements.txt

    pip 批量导出包含环境中所有组件的requirements.txt文件 pip freeze > requirements.txt pip 批量安装requirements.txt文件中包含的 ...

  10. mysql varchar类型转换int类型

    select * from gyzd_yysinfo order by cast(yysid as SIGNED INTEGER) 或者 select * from gyzd_yysinfo orde ...