关于char 指针变量char *=p;这个语句的输出问题

Posted M文坊轩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于char 指针变量char *=p;这个语句的输出问题相关的知识,希望对你有一定的参考价值。

        学习指针的时候我一直有个疑惑,请看下面的代码:

#include <iostream>
using std::cout;
void main()
{
      int num=5;
      int *nPtr=&num;
      cout<<nPtr;//输出指针的地址。但是会报错<<没有直接输出int *地址的功能
      return ;


}

但是,将int 改成char 类型就不会报错,可以输出字符串。同样是指针,这次为何没有输出地址(理应输出指针代表的地址,但是<<并没有重载地址输出的功能所以报错)呢?

#include <iostream>
using std::cout;
void main()
{
      
      char  *nPtr="Address";
      cout<<nPtr;//输出字符串Address;
      return ;


}

原来,输出流运算符<<重载了输出功能,可以自动判断类型,int直接输出,char *就输出所代表的字符串,如果要输出地址,必须使用强制类型转换函数static_cast转换成十六进制数字,其它类型的指针比如int *double *直接输出会报错

#include <iostream>
using std::cout;
void main()
{
      
      char *nPtr=“请问我”;
      cout<<nPtr<<"下个输出是指针地址    "<<static_cast<void *>(nPtr);//语句会报错,不能输出指针。
      return ;


}

 

以上是关于关于char 指针变量char *=p;这个语句的输出问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言指针赋值?

指针值传递指针的指针指针的引用无法返回临时变量地址

C语言中的char具体用法

[转] python关于ctypes使用char指针与bytes相互转换的问题

char *pchar p[]字符串的几个题目

C语言 char** p 初始化