C++需要输出一个参数的地址时可能达不到预期的效果——学习c++

在c++学习中,

#include <iostream>
int main()
{const unsigned short ITEMS = 5;int intarray[ITEMS] = {67,68,69,70,71};char chararray[ITEMS] = {'c','h','e','n','g'};int *intPtr = intarray;char*charPtr = chararray;std::cout<< "整型数据输出:\n";for(int i = 0 ;i < ITEMS; i++){std::cout << *intPtr << "    at    " << intPtr<< '\n';intPtr++;}std::cout  << "字符型数据输出:\n";for(i = 0; i < ITEMS ; i++){  std::cout  << *charPtr << "    at    " <<(int*)charPtr<<'\n';charPtr++;}return 0;}

输出结果为

其中(int*)charPtr 也可以换成reinterpret_cast< unsigned long>(charPtr)等等,都可以输出正确的字符型数组地址,但是如果把int*)charPtr 替换成charPtr就不行,输出出来的内容与预期不符(如下图)


其中整型指针输出地址没有变化,而字符型指针输出的地址是乱码。可能是c++中,使用cout输出地址时,每个指针提前定义好类型了,然后一直按照此类型输出。c语言中 ,用printf函数输出时还需要重新打出输出时的类型(如%c,%d等等),而c++中只有第一步定义指针类型,在输出指针时没有像c一样再去考量输出的类型。(int*)charPtr 就是强制把字符型转换为整型,把地址以整型数据输出。

C++需要输出一个参数的地址时可能达不到预期的效果相关推荐

  1. 如何强制ffmpeg编码时输出一个关键帧

    原文地址:http://www.ffmpeg.com.cn/index.php/%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6ffmpeg%E7%BC%96%E7%A0%81 ...

  2. linux前一个的输出作为后一个参数,将Linux命令的结果作为下一个命令的参数

    查询所有的pid并杀死. jps -l | grep bdcsc2-native-demo | awk '{print $1}' | xargs kill -9 KISS:keep it short ...

  3. C语言学习之编写一个C程序,运行时输人abc三个值,输出其中值最大者。

    编写一个C程序,运行时输人abc三个值,输出其中值最大者. #include <stdio.h> void main(){int a,b,c,max;printf("请输入三个数 ...

  4. 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个参数被传 ...

  5. python中定义一个类、实例化时传入的参数如何传递_用实例分析Python中method的参数传递过程...

    什么是method? function就是可以通过名字可以调用的一段代码,我们可以传参数进去,得到返回值.所有的参数都是明确的传递过去的. method是function与对象的结合.我们调用一个方法 ...

  6. Maya2018快捷键F键或A键聚焦物体时物体消失的Bug最优解决方法:只用修改userPrefs.mel脚本中的一个参数即可。(亲测有效)

    一.Maya2018这个Bug让人抓狂,网上很多方法无解 最近在使用Maya2018时发现一个比较严重的Bug,就是在透视视窗或者其他视窗里,对选中物体按F键或A键聚焦时,视窗里面的物体会莫名其妙全部 ...

  7. ArcObject Java:shape cad转换为Geojson,以及坐标系转换参数获取和转换,或者输出一个Path(线)的字符串(工具类)

    QQ交流群:607330463 GIS开发技术最强交流群 未经允许 禁止转载 可以参考 ArcObject Java: (1)shape cad转换为Geojson (2)坐标系转换参数获取 (3)坐 ...

  8. 编写一个C程序,运行时输出以下图形:

    编写一个C程序,运行时输出以下图形: **** **** ​ **** ​ **** 代码示例: #include <stdio.h>int main() {for (int i = 0; ...

  9. java点击按钮结线程_多线程的Java应用程序在调试工具Netbeans中单击“停止”按钮时输出一个奇怪的结果...

    我使用wait()和notify()机制学习了java中的多线程. 但我很好奇输出一个简单的多线程Java应用程序. 代码如下: class Q { int n; boolean valueSet = ...

最新文章

  1. 拿到offer可以不去吗_2020应届毕业生求职难吗?不难!教你四招,拿到心动的Offer...
  2. SQL SERVER与C#中数据类型的对应关系
  3. 最大矩形—leetcode85
  4. linux solrcloud zookeeper分布式集群部署
  5. 信息系统状态过程图_操作系统中的增强型过程状态图
  6. java 位运算 权限控制_java 位运算权限管控(转载)
  7. C语言指针怎么存二维数组,C语言怎么用指针代替二维数组
  8. Maven包装过程中跳过测试
  9. java10 WeakHashMap
  10. flash传值给javascript,并在html页面输出,javascript向flash swf文件传递参数值注意细节...
  11. docker删除私有仓库中的镜像
  12. C语言qsort和C++sort的用法小结和区别比较
  13. Windows开发——内存读写API
  14. 安信可云服务器,4g dtu测试,利用安信可进行透传测试
  15. CDN 回源与文件预热
  16. 通过GDI+修改jpg文件EXIF属性
  17. 优麒麟搜狗输入法简繁切换
  18. java的过滤器_java过滤器
  19. 高德地图两种引入方式
  20. vue实例的watch选项

热门文章

  1. 谈论linux同组多用户操作问题
  2. JavaScript之使用AJAX(适合初学者)
  3. 将war包发布到测试服的常用命令
  4. 设计模式:结构型模式总结
  5. 配置通过Apache(httpd)访问Subversion(SVN)1.7资源库
  6. 解决ExcuteFile执行命令时出现“无效字符”的问题
  7. .NET客户端的数据验证实例
  8. 杭电1597_find the nth digit
  9. SQLServer2008 视图创建实例
  10. MySQL数据库端字符集设置