int ** vs int (*)[] 이차원배열 C언어 이야기2012. 12. 18. 10:55
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int (*func(void))[4]
{
int a[2][4] = { 1,2,3,4,5,6,7,8};
return a;
}
int **bar(void)
{
int a[2][4] = { 1,2,3,4,5,6,7,8};
return a;
}
typedef int (*FOO)[4];
FOO foo(void)
{
int a[2][4] = { 1,2,3,4,5,6,7,8};
return a;
}
//끝이 10인 2차원 배열을 인자로 받아서, 그걸 다시 리턴하는 함수
int (*hooney(int (*a)[10], int size))[10]
{
a[size-1][2] = 41;
return a;
}
int main()
{
int i=0;
int j=0;
int a = (i++, j--);
int b = ({i++; j--;});
printf("%d %d %d %d\n", a, b, i , j);
int (*p)[4] = func();
printf("func *(*(p+1)+2) : %d\n", p[1][2]);
int (*var_foo)[4] = foo();
printf("foo *(*(p+1)+2) : %d\n", var_foo[1][2]);
int var_hooney[1][10] = {{1,2,3,4,5,6,7,8,9,10}};
int (*ret_hooney)[10] = hooney(var_hooney, 1);
printf("var_hooney size : %d\n", sizeof(var_hooney));
for(i = 0 ; i < 10; i++)
{
printf("%d\n", ret_hooney[0][i]);
}
int** var_bar = bar();
printf("bar *(*(p+1)+2) : %d\n", var_bar[1][2]);
return 0;
}
'C언어 이야기' 카테고리의 다른 글
linux hlist 분석 (0) | 2013.02.09 |
---|---|
공유라이브러리 연습 (0) | 2013.01.28 |
rbtree insert (0) | 2012.12.11 |
rb 트리 (0) | 2012.12.11 |
구조체 배열 초기화 방법 (0) | 2012.10.08 |