c++函数中的指针参数与地址参数区别介绍

mkdir_new

mkdir_new

2016-02-19 11:51

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享c++函数中的指针参数与地址参数区别介绍的教程,热爱PS的朋友们快点看过来吧!
比如 一个函数 chat(link &a); chat(ling *a); 前者引入一个地址做形参 是不是可以把一个指针变量p。。 这么用chat(p); 那跟第二个函数 有什么区别呢 都是传地址啊。。 小弟弄不明白~~

chat(int&a); chat(int *a); 这两个函数是完全不同意义的东西,你的理解主要是在int&a和int* a这个类型上面。要注意int&和int*是两个完全不同的类型。int&是引用类型,而int*是指向int类型变量的指针类型。 void chat(int&a) { a=20; } 调用此函数: int x=100; chat(x); // 此时x的值变为20了 如果函数如下: void chat (int*a) { *a=20; } 调用: int x=10; chat(&x); //此时x的值也会变为20; 这是他们有联系的地方,也就是他们都可以在函数里面改变外面变量的值,但是这两个的参数传递方式是不一样的void chat(int&a)这个函数是引用传递,而void chat(int*a);这个函数是值传递(虽然其传递的值是地址值,但是还是值传递)。 这个引用类型应该怎么理解呢? 我是这样理解的:int a=100;那么a到底是个什么东西,我们说a使我们定义的一个变量,那么变量又是个什么东西呢,不知道你有没有想过,我们不谈编译原理,但是你可以将a看成是这么一个东西,a代表了一块内存空间,注意:是一块内存空间,也就是说这一块内存空间可能由一个或多个字节组成,那么在VC++ 6.0中,int类型的变量占4个字节,所以a代表了4个字节的连续的内存空间。那么int &b=a;定义了这一句之后,b和a一样都代表了那4个字节的内存空间了。再看看int *c=&a;此时c是什么呢?c也代表了一块内存空间,在VC ++6.0中int*类型的变量占4个字节的内存空间,所以c代表了一个连续的4个字节的内存空间,在其内部放的值就是a代表的那块内存空间的第一个字节的地址值。 所以我们向chat(int&a)传递参数的时候例如chat(x)此时a与x同样代表一块内存空间,而chat(int*a)调用的时候:chat(&x);此时a里面的值就是&x,也就是x代表的内存的首地址。 所以你要明白,他们不是传递的都是地址!!!!! 在C++中地址和引用不是一个东西!!!
展开更多 50%)
分享

猜你喜欢

c++函数中的指针参数与地址参数区别介绍

编程语言 网络编程
c++函数中的指针参数与地址参数区别介绍

C/C++中多维数组的指针作为函数参数传递!

编程语言 网络编程
C/C++中多维数组的指针作为函数参数传递!

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

浅谈C++函数的参数

编程语言 网络编程
浅谈C++函数的参数

c++ 指针与引用的区别介绍及使用说明

编程语言 网络编程
c++ 指针与引用的区别介绍及使用说明

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

C/C++中函数指针的含义

编程语言 网络编程
C/C++中函数指针的含义

c++中typename和class的区别介绍

编程语言 网络编程
c++中typename和class的区别介绍

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

弦图ZOJ 1015 Fishing Net 判定方法

弦图ZOJ 1015 Fishing Net 判定方法

URI、URL和URN之间的区别与联系

URI、URL和URN之间的区别与联系
下拉加载更多内容 ↓