1 //**************************此为一维数组********************************* 2 #include<iostream.h> 3 #include<iomanip.h> 4 5 void main() 6 { 7 int a[10]; 8 int* b=a; 9 10 int n,m; 11 n=sizeof(a); 12 cout<<"n="<<n<<endl; 13 14 m=sizeof(b); 15 cout<<"m="<<m<<endl; 16 17 cout<<"a: "<<(int*)a<<endl; 18 19 cout<<"*a: "<<*a<<endl; 20 cout<<"a[0]: "<<a[0]<<endl; 21 22 for(int i=0;i<10;i++) 23 { 24 *(a+i)=i*3; 25 } 26 27 for(i=0;i<10;i++) 28 cout<<setw(5)<<a[i]; 29 cout<<endl; 30 31 for(i=0;i<10;i++) 32 cout<<setw(5)<<*b++;//又出错了,数组名为const指针,不进行自加操作; 33 34 cout<<endl; 35 36 cout<<(int*)a<<endl;//0x0012FF58;(程序运行后的输出结果) 37 cout<<(int)a<<endl;//1245016;(程序运行后的输出结果) 38 cout<<a<<endl;//0x0012FF58;(程序运行后的输出结果) 39 40 41 }
运行结果如下:
n=40
m=4
a: 0x0012FF58
*a: -858993460
a[0]= -858993460
0 3 6 9 12 15 18 21 24 27
0 3 6 9 12 15 18 21 24 27
0x0012FF58
1245016
0x0012FF58
===================================================================================================
//******************************二维数组************************************** #include<iostream.h> #include<iomanip.h> void main() { static int a[3][3]; int i,j; int* pr=(int*)a;//这里的赋值,a不行(需要加上强制转换(int*)才行),a[0]可以,&a[0][0]可以; cout<<"a[0]="<<a[0]<<endl <<"a="<<a<<endl <<"&a[0][0]="<<&a[0][0]<<endl <<"a[1]="<<a[1]<<endl <<"&a[1][0]="<<&a[1][0]<<endl <<"a+1="<<a+1<<endl <<"a[1]+1="<<a[1]+1<<endl <<"&a[1][1]="<<&a[1][1]<<endl <<"a+2="<<a+2<<endl <<"sizeof(a[0])="<<sizeof(a[0])<<endl <<"sizeof(a)="<<sizeof(a)<<endl; for(i=0;i<3;i++) { for(j=0;j<3;j++) { a[i][j]=i*10+j; cout<<setw(5)<<a[i][j]; } cout<<endl; }//====================================================》赋值并且输出; for(i=0;i<3;i++) { for(j=0;j<3;j++) cout<<setw(5)<<*pr++; cout<<endl; }//===================================================》这里可以运行通,说明二维数组的内存是连续的; }
运行结果:
a[0]=0x0042E058
a=0x0042E058
&a[0][0]=0x0042E058
a[1]=0x0042E064
&a[1][0]=0x0042E064
a+1=0x0042E064
a[1]+1=0x0042E068
&a[1][1]=0x0042E068
a+2=0x0042E070
sizeof(a[0])=12
sizeof(a)=36
0 1 2
10 11 12
20 21 22
0 1 2
10 11 12
20 21 22
对二维数组的情况进行总结:
地址(16进制) | |||
a | a[0] | &a[0][0] | 0x0042E058 |
a+1 | a[1] | &a[1][0] | 0x0042E064 |
a+2 | a[2] | &a[2][0] | 0x0042E070 |
a[1]+1 | &a[1][1] | 0x0042E068 |