C++需要输出一个参数的地址时可能达不到预期的效果
生活随笔
收集整理的這篇文章主要介紹了
C++需要输出一个参数的地址时可能达不到预期的效果
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C++需要輸出一個(gè)參數(shù)的地址時(shí)可能達(dá)不到預(yù)期的效果——學(xué)習(xí)c++
在c++學(xué)習(xí)中,
#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<< "整型數(shù)據(jù)輸出:\n";for(int i = 0 ;i < ITEMS; i++){std::cout << *intPtr << " at " << intPtr<< '\n';intPtr++;}std::cout << "字符型數(shù)據(jù)輸出:\n";for(i = 0; i < ITEMS ; i++){ std::cout << *charPtr << " at " <<(int*)charPtr<<'\n';charPtr++;}return 0;}輸出結(jié)果為
其中(int*)charPtr 也可以換成reinterpret_cast< unsigned long>(charPtr)等等,都可以輸出正確的字符型數(shù)組地址,但是如果把int*)charPtr 替換成charPtr就不行,輸出出來的內(nèi)容與預(yù)期不符(如下圖)
其中整型指針輸出地址沒有變化,而字符型指針輸出的地址是亂碼。可能是c++中,使用cout輸出地址時(shí),每個(gè)指針提前定義好類型了,然后一直按照此類型輸出。c語言中 ,用printf函數(shù)輸出時(shí)還需要重新打出輸出時(shí)的類型(如%c,%d等等),而c++中只有第一步定義指針類型,在輸出指針時(shí)沒有像c一樣再去考量輸出的類型。(int*)charPtr 就是強(qiáng)制把字符型轉(zhuǎn)換為整型,把地址以整型數(shù)據(jù)輸出。
總結(jié)
以上是生活随笔為你收集整理的C++需要输出一个参数的地址时可能达不到预期的效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java白盒测试面试题_面试之JAVA基
- 下一篇: 2012年9月计算机二级c语言,2012