한국어
C/C++
 

C 배열과 포인터, 등가포인터 예제

makersweb 2019.01.16 00:18 조회 수 : 177

배열과 포인터, 등가포인터 예제

#include <stdio.h>

int a[2][3] = {{1,2,3},{4,5,6}};
int b[2][3] = {{10,20,30},{40,50,60}};
int (*c[2])[3] = {b, a};
int (**p)[3] = c;

// c[1] => a
// 6: a[1][2] = c[1][1][2] = f1()[1][2]
// f1() = c[1]

// int (*[2])[3] => c
// int (*)[3] => c[1]

int (*f1(void))[3]
{
     return c[1];
}

// int (*[2])[3] => c
// int (**)[3] => c 등가

// f2() = c+1
// f2()-1 = c
// 6 = a[1][2] = c[1][1][2] = (f2()-1)[1][1][2] = f2()[0][1][2]

int (**f2(void))[3]
{
     return c+1;
}

// int a[2][3] => a
// int [3] => a[0]
// int *


// f3()+1 = a[0]
// 6 = a[1][2] = a[0][5] = (f3()+1)[5] = f3()[6]


int * f3(void)
{
     return a[0]-1;
}

//int (**)[3] => p
// p = c => c[1] = a = p[1]
// p[1] = a, a[1][2] = p[1][1][2]

int (**f4(void))[3]
{
    return p;
}


// int (*(*)[2])[3] => &c
// *f5() = c
// c[1] = a, a[1][2] = c[1][1][2] = (*f5())[1][1][2] = f5()[0][1][1][2]


int (*(*f5(void))[2])[3]
{
    return &c;
}

int main(void)
{
     printf("6=%d\n", f1()[1][2]);
     printf("6=%d\n", f2()[0][1][2]);
     printf("6=%d\n", f3()[6]);
     printf("6=%d\n", f4()[1][1][2]);
     printf("6=%d\n", f5()[0][1][1][2]);

     return 0;
}

 

번호 제목 글쓴이 날짜 조회 수
공지 C Programming FAQs(한글번역 pdf문서) makersweb 2014.03.18 21260
» 배열과 포인터, 등가포인터 예제 makersweb 2019.01.16 177
18 싱글톤 객체생성 패턴에 대해서 file makersweb 2018.07.01 891
17 함수포인터와 typedef로의 선언 makersweb 2018.02.03 392
16 예제소스를 통해 리틀엔디안(Little endian)과 빅엔디안(Big endian)의 차이점 알아보기 pjk 2014.05.24 5140
15 switch와 if 중 어느 것이 더 빠른가 file makersweb 2017.01.31 1940
14 구조체 배열을 반환하는 함수를 반환하는 함수를 호출하여 구조체 멤버 배열 요소 접근하기 makersweb 2016.05.22 4555
13 c/c++문자열, 유니코드 관련 함수 makersweb 2015.07.09 4105
12 volatile이 정확히 어떤 의미를 가지는 건가요? pjk 2014.09.30 3502
11 HEX(16진수) to ASCII(아스키) 변환 코드 pjk 2014.08.24 14371
10 strcmp, wcscmp, _tcscmp pjk 2014.07.18 7000
9 클래스 멤버에 대한 액세스 제어 pjk 2014.06.27 3906
8 unsigned형의 모든 상수에는 접미사 ‘U’를 사용하여야 한다. file pjk 2014.05.24 33577
7 void형 포인터 pjk 2014.05.24 4601
6 함수 포인터의 배열 pjk 2014.05.24 5818
5 구조체 메모리 저장방식 #pragma pack file pjk 2014.05.24 4466
4 Bit fields(비트필드) pjk 2014.05.24 4065
3 영어를 C언어로, 또는 C언어를 영어로 변환 해주는 cdecl makersweb 2014.03.19 4058
2 C언어 강좌-배열과 포인터 file makersweb 2014.03.10 4247
1 C코드 최적화 pjk 2014.02.10 4881