😄指针--作为参数进行传递
2019-05-23 本文已影响0人
JiehongYOU
内存地址 &
什么是指针 *
指针是一个变量,值为 另一个变量的内存地址
值:都是一个代表内存地址的长十六进制数
#include <stdlib.h>;
#include <iostream>;
using namespace std;
// 定义结构体
typedef struct {
int x;
int y;
}Coor;
namespace test {
void fun(int *a,int *b) {
int c = 0;
c = *a;
*a = *b;
*b = c;
}
void fun2(int& a, int& b) {
int c = 0;
c = a;
a = b;
b = c;
}
}
// 指针方向
//类型 *&指针引用名 = 指针
// 只有别名,没有真实姓名
int main(void) {
/*
------------------------------
*/
// 定义基础类型
int a = 3;
// 进行引用:别名的操作,就是本身的操作
int &b = a;
b = 33;
cout << a << endl; // 输出的a:33
/*
------------------------------
*/
// 自定义结构体
Coor c1;
// 引用结构体
Coor& c = c1;
// 别名引用的操作:实际上是对其本身的操作
c.x = 10;
c.y = 20;
cout << "c1.x :" << c1.x << " c1.y" << c1.y << endl; // 输出的c1.x = 10 ; c1.y= 20
/*
------------------------------
*/
// 基础类型的定义
int a2 = 10;
// 指针是:引用的地址
int *p = &a2;
// 对p的操作:实际上是对a的操作
*p = 1111;
cout << "a2 : " << a2 << endl; // a2 进行了修改 = 1111
// p 本来就是a2的值
// 将p 的值,进行传递给q ,需要,进行数据类型的统一
// q 为引用指针
int *&q = p;
// 对q的操作,是对p 的操作,实际是对 a2 的操作
*q = 2222;
// p是地址 并且 p 和 q 的值是相同的.
// *p 取得是地址里边得值
// 显示地址
cout << "p:" << p << endl;
cout << "q:" << q << endl;
// 显示地址里边的内容
cout << "p:" << *p << endl;
cout << "q:" << *q << endl;
cout <<"a2:"<< a2 << endl; // a2 已经被修改为2222
/*
------------------------------
*/
// 参数调用
int x = 10, y = 20;
test::fun(&x, &y);
test::fun2(x, y);
cout << "exchange:" << "x:" << x << "y:" << y << endl;
cout << "exchange-fun2:" << "x:" << x << "y:" << y << endl;
// 引用传递
// 定义引用
int d = 10;
int& f = d; // b 是a的别名
f = 100;
cout << d << endl;
cout << f << endl;
system("pause");
return 0;
}