C语言中这几种数组,弄明白了吗?int(*pai[2])[5],int *aapi[2][2], int **p[2], int *numT[5], int(*num2)[5]

发布时间 2024-01-12 00:47:18作者: 万佛从心

int main() {

int a[5]= {1,3,5,7,9};
int(*num1)[5]=&a;
int *num[5]= {&a[0],&a[1],&a[2],&a[3],&a[4]};

int b[5]= {2,4,6,8,10};
int(*num2)[5]=&b;
int *numT[5]= {&b[0],&b[1],&b[2],&b[3],&b[4]};
cout<<"=====二级指针与指针数组===="<<endl;
int**pp=num;
for(int i=0; i<5; i++) {
	printf("%d ",**pp);
	++pp;
}
printf("\n\n");

cout<<"=====二级指针数组===="<<endl;
int **p[2]= {num,numT};
for(int j=0; j<2; j++) {
	for(int i=0; i<5; i++) {
		printf("%d ",*p[j][i]);
	}
	printf("\n");
}

cout<<"=====二维指针都存int*类型的数据======="<<endl;
int  *aapi[2][2]= {&a[0],&a[1],&a[2],&a[3]};
for(int i=0; i<2; i++) {
	for(int j=0; j<2; j++)
		cout<<*aapi[i][j]<<" ";
	cout<<endl;
}
cout<<"=====行指针数组======="<<endl;
int(*pai[2])[5]= {num1,num2};
for(int i=0; i<2; i++) {
	for(int j=0; j<5; j++)
		cout<<*(*(pai[i])+j)  <<" ";
	cout<<endl;
}

return 0;

}