请仔细看下面的程序,比较运行所得到的结果,仔细分析 出现的问题!
#include<iostream>
using namespace std;
int main()
{
int a[3][3] = { {1,2,3},{4,5,6},{7,8,9}};
int *p;
p = (int *)a ; //强制类型转换 否则的话 直接这样 p= a操作的话会提示 `int[3][3]' to `int*' in assignment 的错误!
//assignment 转化 转让 委派委任!
cout<<sizeof(p)<<endl;//不管 p 是何种类型的 但是只要用sizeof()去测指针变量的空间内存大小的时候,都是4 ;
cout<<sizeof(a)<<endl; ///整形术组 的空间的大小!
cout<<sizeof(a[0])<<endl;//二维数组第一列所占的空间大小!
cout<<*(a[0] + 2)<<endl;//通过指针的偏移寻找二维数组的第一行的 相关元素!
system("pause");
return 0;
}
运行的结果 :
4
36
12
3
<
#include<iostream>
using namespace std;
int main()
{
int a[3][3] = { {1,2,3},{4,5,6},{7,8,9}};
int *p;
p = (int *)a ; //强制类型转换 否则的话 直接这样 p= a操作的话会提示 `int[3][3]' to `int*' in assignment 的错误!
//assignment 转化 转让 委派委任!
cout<<sizeof(p)<<endl;//不管 p 是何种类型的 但是只要用sizeof()去测指针变量的空间内存大小的时候,都是4 ;
cout<<sizeof(a)<<endl; ///整形术组 的空间的大小!
cout<<sizeof(a[0])<<endl;//二维数组第一列所占的空间大小!
cout<<*(a[0] + 2)<<endl;//通过指针的偏移寻找二维数组的第一行的 相关元素!
system("pause");
return 0;
}
运行的结果 :
4
36
12
3
<