首页 > 编程 > C++ > 正文

C++ cout输出 字符型变量的地址

2019-11-11 02:02:07
字体:
来源:转载
供稿:网友

在C++中,如果cout一个字符数组的话,那么它会沿着这个地址,一直输出这个字符串,直到遇到'/0'实际上,C++标准库中I/O类对输出操作符<<重载,在遇到字符型指针时会将其当做字符串名来处理,输出指针所指的字符串。既然这样,我们就别让他知道那是字符型指针,所以得进行类型转换,即:希望任何字符型的指针变量输出为地址的话,都要作一个转换,即强制char *转换成void *

#include<iostream>int main(){const short ITEMS=5;int intArray[ITEMS]={1,2,3,4,5};char charArray[ITEMS]={'L','M','Y','L','R'};int *intPointer=intArray;char *charPointer=charArray;std::cout<<"整形数组输出"<<"/n";for(int i=0;i<ITEMS;i++){std::cout<<*intPointer<<"  at   "<<intPointer<<"/n" ;intPointer++;}std::cout<<"字符型数组输出"<<"/n";for(int i=0;i<ITEMS;i++){std::cout<<*charPointer<<"  at   "<<charPointer<<"/n" ;charPointer++;}return 0;}

整形数组输出1  at   0x29ff002  at   0x29ff043  at   0x29ff084  at   0x29ff0c5  at   0x29ff10字符型数组输出L  at   LMYLR@M  at   MYLR@Y  at   YLR@L  at   LR@R  at   R@

对字符型指针进行强制类型转换之后:

#include<iostream>int main(){const short ITEMS=5;int intArray[ITEMS]={1,2,3,4,5};char charArray[ITEMS]={'L','M','Y','L','R'};int *intPointer=intArray;char *charPointer=charArray;std::cout<<"整形数组输出"<<"/n";for(int i=0;i<ITEMS;i++){std::cout<<*intPointer<<"  at   "<<intPointer<<"/n" ;intPointer++;}std::cout<<"字符型数组输出"<<"/n";for(int i=0;i<ITEMS;i++){std::cout<<*charPointer<<" at   "<<(void *)charPointer<<"/n" ;charPointer++;}return 0;}

整形数组输出1  at   0x29ff002  at   0x29ff043  at   0x29ff084  at   0x29ff0c5  at   0x29ff10字符型数组输出L at   0x29fef0M at   0x29fef1Y at   0x29fef2L at   0x29fef3R at   0x29fef4


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选