学了很长时间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. 安装配置solr

    1.由于用户是普通用户,没有root一些权限,所以修改hadoop用户权限 用root权限,修改sudoers文件 nano    /etc/sudoers   打开文件,修改hadoop用户权限,如 ...

  2. spring boot + slf4j + log4j配置

    https://docs.spring.io/spring-boot/docs/1.5.6.RELEASE/reference/htmlsingle/#boot-features-logging ht ...

  3. thrift协议的服务进压力测试

    Thrift vs  Grpc内容如下链接 http://blog.csdn.net/dazheng/article/details/48830511 背景:Facebook 开发的远程服务调用框架 ...

  4. PHP程序连接多个redis实例做缓存

    1.redis配置: $CONFIG_REDIS = array(     array('host' => '192.168.19.29', 'port' => '6379', 'dbIn ...

  5. python开发_python中字符串string操作

    在python中,对于字符串string的操作,我们有必要了解一下,这样在我们的以后的开发中会给我们带来很多方便 下面是我学习的笔记: #python-string #python中的字符串用单引号' ...

  6. python实现cifar10数据集的可视化

    在学习tensorflow的mnist和cifar实例的时候,官方文档给出的讲解都是一张张图片,直观清晰,当我们看到程序下载下来的数据的时候,宝宝都惊呆了,都是二进制文件,这些二进制文件还不小,用文本 ...

  7. windows兼容方式安装python[转]

    Python 是一门很不错的语言,语言简单易学,又不失脚本语言的灵活性,还有海量的第三方库,覆盖的很全面.但也有不少“硬伤”,比如 Python 2.x 和 Python 3.x 版本之间的不兼容等等 ...

  8. **类的起源--type

    通过type类的实例化,创建新的类. #!/usr/bin/env python # Version = 3.5.2 def func(self): print('Hello,{}'.format(s ...

  9. objective c to pas

    https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol ...

  10. jvm的happens-before原则

    提到并发,通常首先想到是锁,其实对共享资源的互斥操作是一方面,在Java中还有一方面是内存的可见性和顺序化,了解JMM的同学可能会更清楚些,内存可见性和顺序性同样非常重要,在这里简单提一下JMM模型, ...