浅析char 指针变量char *=p 这个语句的输出问题
学习指针的时候我一直有个疑惑,请看下面的代码:
#include<iostream> usingstd::cout; voidmain() { intnum=5; int*nPtr=# cout<<nPtr;//输出指针的地址。但是会报错<<没有直接输出int*地址的功能 return; }
但是,将int改成char类型就不会报错,可以输出字符串。同样是指针,这次为何没有输出地址(理应输出指针代表的地址,但是<<并没有重载地址输出的功能所以报错)呢?
#include<iostream> usingstd::cout; voidmain() { char*nPtr="Address"; cout<<nPtr;//输出字符串Address; return; }
原来,输出流运算符<<重载了输出功能,可以自动判断类型,int直接输出,char*就输出所代表的字符串,如果要输出地址,必须使用强制类型转换函数static_cast转换成十六进制数字,其它类型的指针比如int*double*直接输出会报错
#include<iostream> usingstd::cout; voidmain() { char*nPtr=“请问我”; cout<<nPtr<<"下个输出是指针地址"<<static_cast<void*>(nPtr);//语句会报错,不能输出指针。 return; }
以上这篇浅析char指针变量char*=p这个语句的输出问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。