在学习黑马基础课的案例时
由于编译器的不同,产生了报错
#include<iostream>
using namespace std;
int main()
{// 计算数组长度
int arr[10]={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 ;
//2、可以通过数组名查看数组首地址
cout<<"数组首地址为:"<<(int)arr<<endl;
cout<<"数组中第一个元素地址为:"<<(int)&arr[0]<< endl;
system("pause");
return 0;
}
因为基于Linux内核的64位系统上指针类型占用8个字节,而int类型占用4个字节,会出现loses precision 错误信息。
可以先将int* 转成long类型 long类型可以隐式类型转换到int类型。直接修改为long long即可
#include<iostream>
using namespace std;
int main()
{
//
int arr[10]={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 ;
//2、可以通过数组名查看数组首地址
cout<<"数组首地址为:"<<(long long)arr<<endl;
cout<<"数组中第一个元素地址为:"<<(long long)&arr[0]<< endl;
system("pause");
return 0;
}
运行结果如下: