#include<iostream> using namespace std; void PrintCircle(int **matrix,int start,int row,int column){ int endX=column-1-start; int endY=row-1-start; for(int i=start;i<=endX;i++){ cout<<matrix[start][i]<<' '; } if(start<endY){ for(int i=start+1;i<=endY;i++){ cout<<matrix[i][endX]<<' '; } } if(start<endX&&start<endY){ for(int i=endX-1;i>=start;i--){ cout<<matrix[endY][i]<<' '; } } if(start<endY-1&&start<endX){ for(int i=endY-1;i>=start+1;i--){ cout<<matrix[i][start]<<' '; } } } void PrintMatrix(int **matrix,int row,int column){ if(matrix==NULL||row<=0||column<=0) return; int start=0; while(row>2*start&&column>2*start){ PrintCircle(matrix,start,row,column); start++; } } void main(){ int **p=new int*[3]; /*for(int i=0;i<3;i++){ p[i]=new int[4]; }*/ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};//二维数组的地址名为首行数组的首地址 for(int i=0;i<3;i++){ p[i]=a[i]; } PrintMatrix(p,3,4); system("pause"); delete p; p=NULL; }
原文:http://blog.csdn.net/eliza1130/article/details/44536465