한국어
C/C++
 

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

makersweb 2019.01.16 00:18 조회 수 : 1163

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

#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 27011
22 비트 필드의 크기는 해당 유형의 크기를 초과할 수 없다. makersweb 2023.04.25 416
21 flexible array member 에 대해서 file makersweb 2020.02.20 1983
20 C++로 플러그인 개발 file makersweb 2019.12.08 1857
» 배열과 포인터, 등가포인터 예제 makersweb 2019.01.16 1163
18 싱글톤 객체생성 패턴에 대해서 file makersweb 2018.07.01 3713
17 함수포인터와 typedef로의 선언 makersweb 2018.02.03 1205
16 switch와 if 중 어느 것이 더 빠른가 file makersweb 2017.01.31 2883
15 구조체 배열을 반환하는 함수를 반환하는 함수를 호출하여 구조체 멤버 배열 요소 접근하기 makersweb 2016.05.22 9849
14 c/c++문자열, 유니코드 관련 함수 makersweb 2015.07.09 5286
13 volatile이 정확히 어떤 의미를 가지는 건가요? pjk 2014.09.30 4664
12 HEX(16진수) to ASCII(아스키) 변환 코드 pjk 2014.08.24 33215
11 strcmp, wcscmp, _tcscmp pjk 2014.07.18 10619
10 클래스 멤버에 대한 액세스 제어 pjk 2014.06.27 4759
9 unsigned형의 모든 상수에는 접미사 ‘U’를 사용하여야 한다. file pjk 2014.05.24 37540
8 void형 포인터 pjk 2014.05.24 5182
7 함수 포인터의 배열 pjk 2014.05.24 7660
6 구조체 메모리 저장방식 #pragma pack file pjk 2014.05.24 5438
5 Bit fields(비트필드) pjk 2014.05.24 4489
4 예제소스를 통해 리틀엔디안(Little endian)과 빅엔디안(Big endian)의 차이점 알아보기 pjk 2014.05.24 8243
3 영어를 C언어로, 또는 C언어를 영어로 변환 해주는 cdecl makersweb 2014.03.19 7498