int arr1[2][3][4]; // 높이 2, 세로 3, 가로 4인 int형 3차원 배열
★3차원 배열은 여러 개의 2차원 배열이 모여있는 형태로 이해하는 것이 더 합리적!
int | * | ip | |||
포인터가 가리키는 type | 포인터 선언 | 변수이름 |
일반적인 포인터는 1차원 배열을 가리킬수있다(2차원 이상은 경고?)
예제
#include <stdio.h>
int main(void)
{
int iA=100;
int *ip=&iA;
int **ipp=&ip;
int ***ippp=&ipp;
printf("%d\n", iA);
printf("%d\n", *ip); // iA의 값
printf("%d\n", **ipp); // iA의 값
printf("%d\n", ***ippp); // iA의 값
printf("\n");
printf("%08X\n", &iA);
printf("%08X\n", ip); // iA의 주소 값
printf("%08X\n", ipp); // ip의 주소 값
printf("%08X\n", ippp); // ipp의 주소 값, ippp의 주소 값=&ippp
return 0;
}
예제
#include <stdio.h>
int main(void)
{
double num=3.14;
double *ptr=# // num의 주소 값을 저장
double **dptr=&ptr; // ptr의 주소 값을 저장
double *ptr2;
printf("%9p %9p\n", ptr, *dptr); // ptr=&num, *dptr=*ptr=&num
printf("%9g %9g\n", num, **dptr); // num=3.14, **dptr=3.14
ptr2=*dptr; // ptr2=ptr 과 같은 문장 이때 ptr2=&num
*ptr2=10.99;
printf("%9g %9g\n", num, **dptr); // num=10.99, **dptr=10.99
return 0;
}
예제
#include <stdio.h>
void SwapIntPtr( int **dp1, int **dp2)
{
int *temp=*dp1; // *dp1=&num1
*dp1=*dp2; // *dp2=&num2
*dp2=temp; // temp=*dp1
}
int main(void)
{
int num1=10, num2=20;
int *ptr1, *ptr2;
ptr1=&num1, ptr2=&num2;
printf("*ptr1, *ptr2 : %d %d\n", *ptr1, *ptr2);
SwapIntPtr(&ptr1, &ptr2); // ptr1과 ptr2의 주소 값 전달!
printf("*ptr1, *ptr2 : %d %d\n", *ptr1, *ptr2);
return 0;
}
댓글 없음:
댓글 쓰기