C++ 打印输出指针

大家想必在很多场景下需要打印输出指针地址。看一下下面的输出:

  

   CObject* pObject = new CObject;

    std::cout << pObject << std ::endl;

 

这样直接打印出指针的pObjedct地址。但是下面的输出

char* ptr = "abc";

   std::cout << ptr << std ::endl;

直接输出字符串:"abc",这是为什么?稍等片刻。

void* pVoid = ptr;

   std::cout << pVoid << std ::endl;

这样就可以直接输出指针地址。

想必疑问为何这样的显现呢?其实都是因为 operator << 重载导致的行为。

std::cout 是 std::ostream 的一个对象而已,在ostream 的实现中,

对字符串指针进行了全局函数重载处理,VS2008中实现原型:

template <class _Traits>

inline basic_ostream <char , _Traits>& __CLRCALL_OR_CDECL operator <<

( basic_ostream <char , _Traits>& _Ostr ,const char * _Val)

其它打印指针则:ostream 成员函数:_Myt & __CLR_OR_THIS_CALL operator<<( const void * _Val)

CObject* pObject 则隐式转换打印输出指针指向的地址

时间: 2024-10-25 00:10:14

C++ 打印输出指针的相关文章

用指针引用数组元素并打印输出

<span style="font-size:18px;">#include<stdio.h> void main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4];//数组指针变量声明 int row,col; p=a;//指针p指向数组元素为4的数组 //打印输出数组指针p指向的数组的值 for(row=0;row<3;row++) { for(col=0;col<4;

用指针数组保存字符串并将字符元素打印输出

<span style="font-size:18px;">#include<stdio.h> void main() { //指针数组定义 char *book[4]={"C Programming Language","Assembly Language","Java Language","Natural Language"}; int n=4;//指针数组元素的个数 int r

马兴150809305C语言的指针、链表的原理和各类操作

一.指针 1.运用指针 什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量.从指针指向的内存读取数据称作指针的取值.指针可以指向某些具体类型的变量地址,例如int.long和double.指针也可以是void类型.NULL指针和未初始化指针. 根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值.当用在声明一个变量时,*表示这里声明了一个指针.其它情况用到*表示指针的取值.&是地址操作符,用来引用一个内存地址.通过在变量名字前使用&

指针什么时候加*什么时候不需用加,分别代表什么含义

指针的二值 关于指针,我们有很多困惑,尤其是在使用时什么时候加*,什么时候不加*,都分别代表什么意思,在老师指导下,自己做了一些总计如下: 按照我个人的理解指针的二值分别就是指指针存储的值和指针指向的值,我们都知道,我们经常说的指针实际上是指指针变量,那么变量就有存储的指,只不过指针比较特殊,是用来存储地址的变量,这就是指针二值之一,既然指针变量存储了变量的地址,那么就可以通过存储的地址值就可以找到指向的值.是不是还是很凌乱不知所云,ok,那就让我们看看测试代码,*是用来声明指针的那么当声明了一

C语言的指针、链表的原理和各类操作

心得体会: 堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的.然而要使用c语言这个工具解决实际问题,又必须掌握它.通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定.对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致.学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题.即把c语言作为工

C语言的指针、链表的原理和操作

心得: 堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的.然而要使用c语言这个工具解决实际问题,又必须掌握它.通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定.对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致.学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题.即把c语言作为工具,

指针150206308

#include<stdio.h> int main() { int *ptr;   // 声明一个int指针 int val = 1;  // 声明一个int值 ptr = &val;  // 为指针分配一个int值的引用 int deref = *ptr;  // 对指针进行取值,打印存储在指针地址中的内容 printf("deref地址=%ld,值=%d\n",ptr, deref); } 第2行,我们通过*操作符声明了一个int指针.接着我们声明了一个int

C语言的指针、链表的原理

一.指针 1.运用指针 什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量.从指针指向的内存读取数据称作指针的取值.指针可以指向某些具体类型的变量地址,例如int.long和double.指针也可以是void类型.NULL指针和未初始化指针. 根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值.当用在声明一个变量时,*表示这里声明了一个指针.其它情况用到*表示指针的取值.&是地址操作符,用来引用一个内存地址.通过在变量名字前使用&

C语言中关于指针的学习

指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构: 能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志.同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试.只要作到这些,指针也是不难掌握的. 指针的基本概念 在计算机中,所有的数据