2차원 배열을 억세스하는 포인터 여러 이용 사례
1999/04/06 조경민 coded by bro
2중 포인터를 이용한 가변 동적 2차원 배열 만들기
/*--------------------------------*\
2D array with Pointer of Pointer
\*--------------------------------*/
#include <iostream.h>
#define X 10
#define Y 7
int main()
{
int **p;
p = new int*[Y] ;
for(int y=0;y<Y;y++)
p[y] = new int[X];
for( y=0;y<Y;y++)
{
for(int x=0;x<X;x++)
{
p[y][x] = x+y;
cout<<p[y][x]<<' ';
}
cout<<endl;
}
if(p)
for( y=0;y<Y;y++)
if( p[y] )
delete[] p[y];
delete[] p;
return 1;
}
---------------------------------------------------
배열 포인터와 포인터 배열의 쓰임새 차이
벼열 포인터는 크기가 포인터 하나로 배열의 크기만큼 억세스
길이를미리잡은 포인터이다. 포인터 배열은 여러갯수의 포인터의
선형 배열이다. 전혀 다른 쓰임
#include <stdio.h>
void main()
{
int x[10][5],i,c;
int (*p)[5],*p2[5];
for(i=0;i<10;i++)
for(c=0;c<5;c++)
x[i][c] = i*10+c;
p = new int[10][5];
for(i=0;i<10;i++)
for(c=0;c<5;c++)
p[i][c] = i*10+c;
for(i=0;i<10;i++)
{
for(c=0;c<5;c++)
printf("%d ",x[i][c]);
printf("\n");
}
for(i=0;i<10;i++)
{
for(c=0;c<5;c++)
printf("%d ",p[i][c]);
printf("\n");
}
}
-------------------------------------------------------
typedef를 쓴 배열 포인터를 이용한 2차원 배열 억세스 쓰임
#include <stdio.h>
typedef char row[10]; //row 는 char[10]의 크기를 의미한다.
void main()
{
row a[10]; //10x10
row *p;
p = new row[50];
for(int x=0;x<10;x++)
for(int y=0;y<50;y++)
p[x][y] = x;
printf("\n%d %d",sizeof(a),sizeof(*(p+1)));
for( x=0;x<10;x++)
for( y=0;y<50;y++)
printf("%d ",p[x][y]);
}
1999/04/06 조경민 coded by bro
2중 포인터를 이용한 가변 동적 2차원 배열 만들기
/*--------------------------------*\
2D array with Pointer of Pointer
\*--------------------------------*/
#include <iostream.h>
#define X 10
#define Y 7
int main()
{
int **p;
p = new int*[Y] ;
for(int y=0;y<Y;y++)
p[y] = new int[X];
for( y=0;y<Y;y++)
{
for(int x=0;x<X;x++)
{
p[y][x] = x+y;
cout<<p[y][x]<<' ';
}
cout<<endl;
}
if(p)
for( y=0;y<Y;y++)
if( p[y] )
delete[] p[y];
delete[] p;
return 1;
}
---------------------------------------------------
배열 포인터와 포인터 배열의 쓰임새 차이
벼열 포인터는 크기가 포인터 하나로 배열의 크기만큼 억세스
길이를미리잡은 포인터이다. 포인터 배열은 여러갯수의 포인터의
선형 배열이다. 전혀 다른 쓰임
#include <stdio.h>
void main()
{
int x[10][5],i,c;
int (*p)[5],*p2[5];
for(i=0;i<10;i++)
for(c=0;c<5;c++)
x[i][c] = i*10+c;
p = new int[10][5];
for(i=0;i<10;i++)
for(c=0;c<5;c++)
p[i][c] = i*10+c;
for(i=0;i<10;i++)
{
for(c=0;c<5;c++)
printf("%d ",x[i][c]);
printf("\n");
}
for(i=0;i<10;i++)
{
for(c=0;c<5;c++)
printf("%d ",p[i][c]);
printf("\n");
}
}
-------------------------------------------------------
typedef를 쓴 배열 포인터를 이용한 2차원 배열 억세스 쓰임
#include <stdio.h>
typedef char row[10]; //row 는 char[10]의 크기를 의미한다.
void main()
{
row a[10]; //10x10
row *p;
p = new row[50];
for(int x=0;x<10;x++)
for(int y=0;y<50;y++)
p[x][y] = x;
printf("\n%d %d",sizeof(a),sizeof(*(p+1)));
for( x=0;x<10;x++)
for( y=0;y<50;y++)
printf("%d ",p[x][y]);
}