鱼C论坛

 找回密码
 立即注册
查看: 984|回复: 2

我这个代码第十一行怎么不能把数组的首地址强制从十六进制转化为十进制

[复制链接]
发表于 2023-10-10 19:10:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
using namespace std;
int main()
{
        int  arr[]={1,2,3,4,5,6,7,8,9,10}; //1是第零位
       
        cout<<"整个数组占用内存空间为"<<sizeof(arr)<<endl;
        cout<<"每个数组占用内存空间为"<<sizeof(arr[0])<<endl;
        cout<<"数组中元素的个数为:"<<sizeof(arr)/sizeof(arr[0])<<endl;
        //查看数组的收地址
        cout<<"数组的首地址为:"<<(int)arr<<endl;
       
       
       
        return 0;
}//可以通过数组名统计整个数组的占用内存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-10 19:11:01 | 显示全部楼层
在第11行中,将数组的首地址从十六进制转换为十进制的方法是使用强制类型转换。可以使用 (int) 将数组名 arr 强制转换为 int 类型,从而得到数组的首地址的十进制表示。

修改后的代码如下:
#include<iostream>
using namespace std;
int main()
{
    int arr[]={1,2,3,4,5,6,7,8,9,10}; //1是第零位 

    cout<<"整个数组占用内存空间为"<<sizeof(arr)<<endl;
    cout<<"每个数组占用内存空间为"<<sizeof(arr[0])<<endl;
    cout<<"数组中元素的个数为:"<<sizeof(arr)/sizeof(arr[0])<<endl;
    //查看数组的首地址
    cout<<"数组的首地址为:"<<(int)arr<<endl; 

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-10 19:11:47 | 显示全部楼层
要以十六进制形式输出数组的首地址,可以使用 std::hex 流控制符。下面是修改后的代码:
++#include<iostream>using namespace std;int main(){    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};    cout << "整个数组占用内存空间为" << sizeof(arr) << endl;    cout << "每个数组占用内存空间为" << sizeof(arr[0]) << endl;    cout << "数组中元素的个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;    // 查看数组的首地址(以十六进制形式输出)    cout << "数组的首地址为:" << hex << reinterpret_cast<long long>(arr) << endl;     return 0;}
修改内容如下:
1. 添加 #include<iostream> 头文件。
2. 将输出流的格式修改为 hex,以十六进制形式输出。
3. 使用 reinterpret_cast 将指针转换为 long long 类型,以保证地址输出正确。

这样就能以十六进制形式输出数组的首地址了。希望对你有所帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-3 21:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表