이차원 배열을 포인터로 처리해보아요 결론.
#include
#ifdef __________what___________
오늘은 2차원 배열 구조에서 주소값에 대한 생각을 정리할까 한다.
test[x][y]의 주소값은
test[y]형으로 된 데이터들이 [x]순번으로 저장된 것이다? 라는것에 대한 고찰을 해보자
=================== test[x][y]주소
——————-
——————- test[y]형 데이터 크기
——————-
===================
——————-
——————-
——————-
===================
——————-
——————-
——————-
===================
——————-
——————-
——————-
===================
곰곰히 생각을 해보면 우선 작은형태 그러니까 test[][y]의 크기를 알아야지만
test[x][]를 잡을수 있다는것을 생각만으로도 유추해 낼수 있다..
물론 난 그렇지 못했지만. 생각해보니 그렇네 ㅡ.ㅡ;
하이튼.. 데이터가 어떻게 저장되는지는 알았다. 이제.. 출력하는 방법에 대한 고찰이
필요할 때인다.. 허허..
다시 해결하고 싶은것은.
tmp[i][j]값에서 tmp[i]의 열을 다 출력하는것은 어떻게 짜면될까?라는 생각을 해보고
그것을 해결하고 싶어 진다. 푸헐..
tmp[i]는 tmp[i][0]의 주소이므로
char 형으로 4개를 잡고 이것을 int 형으로 캐스팅한다면 2개를 한꺼번에 출력할수 있지않을까한다?
음 이것은 내가 원하는게 아니군.. 결국 tmp[i]~tmp[i+1]사이를 출력하고싶은것이다.
한번에…. 고민..
#endif
int main(int argc, char *argv[])
{
int test_int[3][5]={0};
char test_char[3][5]={“abcd “,”fghi “,”kp”};
int i=0,j=0;
for (i=0; i<3 ; i++)
{
for(j=0; j<5; j++){
#ifdef __
printf(“sizeof(test_int[%d][%d])=%d sizeof(test_char[%d][%d])=%d
“,
i,j,sizeof(test_int[i][j]), i,j, sizeof(test_char[i][j]));
printf(“sizeof(test_int[%d])=%d “, i, sizeof(test_int[i]));
printf(“sizeof(test_char[%d])=%d
“, i, sizeof(test_char[i]));
printf(“&test_char[%d][%d]= %d “,i,j,&test_char[i][j]);
printf(“&test_char[%d]= %d “,i, &test_char[i]);
printf(“&test_char[%d][0]= %d
“,i,&test_char[i][0]);
#endif
printf(“test_char[%d][%d]= %c “,i,j,test_char[i][j]);
printf(“test_char[%d]= %c “,i, *test_char[i]); // 이것은 주소값이다.
printf(“test_char[%d][0]= %c
“,i,test_char[i][0]);
}
}
printf(“%s
“,test_char[0]);
return 0;
}
#ifdef ________definition_________
test[a]=*(test+a)
test[a][b]=*(test[a]+b)
&test[a][b]=&*(test[a]+b)=test[a]+b
#endif
\