当前位置: 首页 > 编程笔记 >

浅析char 指针变量char *=p 这个语句的输出问题

乐正迪
2023-03-14
本文向大家介绍浅析char 指针变量char *=p 这个语句的输出问题,包括了浅析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 这个语句的输出问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 我正在阅读Bjarne Stroustrup的“使用C进行编程原理和实践”(第二版)。在第660-661页,作者定义了一个函数如下: 稍后在中,函数被称为其中是中,是一个,是一个大小为的数组。 我不明白

  • 在下面给出的代码中,我声明了一个指向int的指针,我们都知道memcpy返回一个指向目标字符串的空指针,所以如果ptr是指向int的指针,那么为什么printf(“%s”,ptr);是完全有效的,ptr毕竟不是指向char的指针。

  • C 17(expr.add/4)表示: 当将具有整型的表达式加到指针或从指针中减去时,结果为指针操作数的类型。如果表达式P指向具有n个元素的数组对象x的元素x[i],如果为0,则表达式P J和J P(其中J的值为J)指向(可能是假设的)元素x[i J]≤i j(i j)≤n否则,行为是未定义的。同样,表达式P-J指向(可能是假设的)元素x[i−j] 如果为0≤我−j≤n否则,行为是未定义的。 线标

  • 描述 (Description) C库函数char *strtok(char *str, const char *delim)使用分隔符delim将字符串str分解为一系列标记。 声明 (Declaration) 以下是strtok()函数的声明。 char *strtok(char *str, const char *delim) 参数 (Parameters) str - 修改此字符串的内容

  • 描述 (Description) C库函数char *strcpy(char *dest, const char *src)将char *strcpy(char *dest, const char *src)指向的字符串复制到dest 。 声明 (Declaration) 以下是strcpy()函数的声明。 char *strcpy(char *dest, const char *src) 参数

  • 描述 (Description) C库函数char *strcat(char *dest, const char *src)将char *strcat(char *dest, const char *src)指向的字符串追加到dest指向的字符串的末尾。 声明 (Declaration) 以下是strcat()函数的声明。 char *strcat(char *dest, const char *