C++檢視資料型別

zhangzhi2ma發表於2018-09-06
#include <typeinfo>
#include<iostream>
using namespace std;
int main()
{
int a[2][2][2]={{{1,2},{3,4}},{{5,6},{7,8}}};
int (*p)[2][2];
int b=10;
int *p1=&b;

short *(pp[2][3]);

cout<<"s point array "<<typeid(pp).name()<<endl;
cout<<"int point "<<typeid(p1).name()<<endl;
cout<<"int "<<typeid(*(p1)).name()<<endl;
cout<<"int array"<<typeid(a).name()<<endl;
cout<<"array point "<<typeid(p).name()<<endl;
p=a;
cout<<"A2 int array"<<typeid((p[1][1])).name()<<endl;
cout<<"int data"<<(p[1][1][1])<<endl;
return 0;	
	
	
}

s point array A2_A3_Ps
int point Pi
int i
int arrayA2_A2_A2_i
array point PA2_A2_i
A2 int arrayA2_i
int data8

類typeid,可以給出資料型別,官方文件說根據環境不同輸出會有差異,分析來看

首先看第一行pp是個指標陣列,一個2,3陣列,陣列每個元素是short指標

第二行p1是個int指標

第三行*p1是int數

第四行a是2,2,2陣列,陣列每個元素是int數

第五行p是一個指標,型別是2,2維的陣列

第六行a賦值給p,p[1][1]取兩次內容變成2維的陣列

第七行p[1][1][1]取三次內容就是int數

 

所以最後來看,一個P_A2_A3_Pi,第一個P表明這個變數本身是指標,A2,A3表示是陣列維度,第二個P表示陣列中每個元素是指標,i表示是int。

相關文章