指向指针的引用和指向指针的指针

1. 指向指针的引用

#include <cstdlib>
#include <iostream>
using namespace std;
// int *&lhs 的定义应该从右向左理解:
// lhs 是一个引用,与指向 int 的指针相关联。
// 也就是说,lhs 是传递进 ptrswap 函数的指针的别名。
// 注意:不能这样定义:int &*lhs,编译报错提示为:cant declare pointer to “int &”
void ptrswap( int *&lhs, int *&rhs )
{
	int *tmp = lhs;
	lhs = rhs;
	rhs = tmp;
}

int main(int argc, char *argv[])
{
	int i = 10;
	int j = 20;

	int *pi = &i;
	int *pj = &j;

	std::cout<<"before swap: *pi == "<<*pi<<"; *pj =="<<*pj <<";" <<std::endl;
	ptrswap(pi,pj);
	std::cout<<"after swap: *pi == "<<*pi<<"; *pj =="<<*pj <<";" <<std::endl;
	system("PAUSE");
	return EXIT_SUCCESS;
}

2 . 指向指针的指针

#include <cstdlib>
#include <iostream>
using namespace std;
void ptrswap( int **lhs, int **rhs )
{
	int *tmp = *lhs;
	*lhs = *rhs;
	*rhs = tmp;
}
int main(int argc, char *argv[])
{
	int i = 10;
	int j = 20;
	int *pi = &i;
	int *pj = &j;
	std::cout<<"before swap: *pi == "<<*pi<<"; *pj =="<<*pj <<";" <<std::endl;
	ptrswap(&pi,&pj);
	std::cout<<"after swap: *pi == "<<*pi<<"; *pj =="<<*pj <<";" <<std::endl;
	system("PAUSE");
	return EXIT_SUCCESS;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-29 03:14:33

指向指针的引用和指向指针的指针的相关文章

为什么基类指针和引用可以指向派生类对象,但是反过来不行?

为什么基类指针和引用可以指向派生类对象,但是反过来不行? 基类指针和引用 BaseClass *pbase = NULL; DerivedClass dclass; pbase = & dclass; 基类指针和引用可以指向派生类对象,但是无法使用不存在于基类只存在于派生类的元素.(所以我们需要虚函数和纯虚函数) 原因是这样的: 在内存中,一个基类类型的指针是覆盖N个单位长度的内存空间. 当其指向派生类的时候,由于派生类元素在内存中堆放是:前N个是基类的元素,N之后的是派生类的元素. 于是基类的

指针和引用(5)函数指针

1.知识点 (1)指针可以指向任何类型,也可以指向函数.每个函数在内存中都占用一段存储单元,这段存储单元的首地址称为函数的入口地址,指向之歌函数入口地址的指针称为函数指针. (2)函数基本用法如下: 1 int max(int a, int b) { 2 return a > b ? a : b; 3 } 4 int (*p)(int, int) = max;//定义函数指针时必须指明函数返回的类型和参数列表 5 int x = 10, y = 20; 6 int z = p(x, y);//可

指针和引用的区别(More Effective c++ )

指针与引用看上去完全不同(指针用操作符"*"和"->",引用使用操作符". " ),但 是它们似乎有相同的功能.指针与引用都是让你间接引用其他对象.你如何决定在什么时候 使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能使用指向空值的引用.一个引用必须总是 指向某些 对象 .因此如果你使用一个变量并让它指向一个对象, 但是该变量在某些时候也可能不指向 任何 对象,这时你应该把变量声明为指针,因为这样 你可以赋空值给该变量.相

C++指针与引用简析

摘要 本文讲述C++中指针与引用的概念 什么是指针 指针的类型 指针所指向的类型 指针表达式 指针与函数 什么是引用 指针引用区别 指针和引用的相同点和不同点 **什么是指针** 指针就是一个存放地址的变量, 当指针指向某个变量, 这时这个指针里就存放了那个变量的地址 , 同时可以利用指针直接取变量中的值用 ,只要在指针前加 * 就是取其 真值了(也就是被指向的变量的值) ![指针示意](http://img.blog.csdn.net/20150605232124686) **指针的类型**

C++学习笔记30,指针的引用(2)

可以创建任何类型的引用,包括指针类型. 看一个简单的指针的引用的例子.例如: #include <iostream> using namespace std; int main(){ int x=10; int y=20; int z=30; int* ptx=&x; int* ptz=&z; //指针的引用,声明从右往左看,rtp与&结合, //剩余的符号和左边结合 //引用一旦创建,不能改变其指向,只能改变其值 int* &rtp=ptx; cout<

C++:指针与引用的区别

(1)指针是一个实体,有分配内存空间,引用只是一个别名,不分配内存空间 (2)指针不用但最好初始化,引用必须初始化 (3)引用只能初始化一次,指针可以多次赋值 (4)可以有const指针,但没有const引用,例如 int* const p合法,int& const p有些编译器会报错,有些编译器会警告并忽视该const修饰符 (5)指针可以指向空值,引用不能指向空值 (6)"sizeof引用"得到的是变量对象的大小,"sizeof指针"得到的是指针本身的大

C++数组指针的引用

数组指针的引用: int a[10]; int * const &b=a; int (&b)[10]=a 在把数组指针的引用传进去,也是以这样的格式,而且参数名可以和全局变量同名 引用不能为空,指针可以为空 "sizeof 引用"得到的是所指向的变量(对象)的大小,而"sizeof 指针"得到的是指针本身的大小 常量指针的引用不能赋值为别的指针,而指针变量的引用可以赋值为别的指针 引用必须初始化,而指针需要赋值为空以防野指针 存疑: 至于引用和指针的

c++指针与引用问题

本来是回答问题的,到这里做个笔记 *&L是指针的引用,实参是个指针.所以L是实参指针的别名,对别名L的修改,等于对实参的修改.*L是传值,你无法改变传过来的实参指针变量的值程序代码: #include<iostream>using namespace std;void foo(int*p);int main(){    int a=5;    int *b=&a;    printf("%d %d\n",b,*b);    foo(b);    printf

指针转引用

1.函数声明为引用类型 int Discover(std::vector<tDeviceInfo>& pDeviceInfo); 2.参数声明为指针类型 std::vector<DeviceData::DeviceInfo>* mDeviceInfo; 3.调用,指针转引用 Discover(*mDeviceInfo);//加上*就是指针转引用 原文地址:https://www.cnblogs.com/judes/p/9267002.html