|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小甲鱼C++快速入门视频,E10中有一个例子,在打印地址时要把指针强制转换(reinterpret_cast<unsigned long>(CharPtr))才能正确打印(对于字符型数组的地址。而对整型的数组地址,直接用intPtr也可以打印)。请问是为什么呢?
其实视频中小甲鱼老师也说了这个问题作为课后思考题,但我还是没想明白,而且现在的C++也找不到课后题了。所以想问问有哪位可以解释一下?~
谢谢~~~
(PS: 要是用C写的话,可以在printf里用%u格式打印地址,所以没问题, 不用转换。似乎C++不行?)
- #include <iostream>
- int main()
- {
- const unsigned short ITEMS = 5;
- int intArray[ITEMS] = {1, 2, 3, 4, 5};
- char charArray[ITEMS] = {'F', 'i', 's', 'h', 'C'};
- int *intPtr = intArray;
- char *charPtr = charArray;
- std::cout << "整型数组输出: " << '\n';
- for( int i=0; i < ITEMS; i++ )
- {
- std::cout << *intPtr << " at " << reinterpret_cast<unsigned long>(intPtr) << '\n';
- intPtr++;
- }
- std::cout << "字符型数组输出: " << '\n';
- for( int i=0; i < ITEMS; i++ )
- {
- std::cout << *charPtr << " at " << reinterpret_cast<unsigned long>(charPtr) << '\n';
- charPtr++;
- }
- return 0;
- }
复制代码 |
|