기타 언어/C 언어
[C 언어] 배열 포인터
all_sound
2023. 3. 22. 16:25
배열 포인터
▶example 1
int (*in)[2]; //배열포인터 생성: (논리적으로) 배열을 2개씩 자름
int num[3] = {1,2,3};
in = num;
printf("%d\n", in); //100(주소값이 100이라고 가정)
printf("%d\n", num); //100
printf("%d\n", *in); //100
printf("%d\n", **in); //1
printf("%d\n", *(*in+1)); //2
printf("%d\n", *(*in+2)); //3
printf("%d\n", *in[1]); //3
▶example 2
int (*in)[4]; //배열포인터 생성: (논리적으로) 배열을 4개씩 자름
int num[3][3] = {1,2,3,4,5,6,7,8,9};
in = num;
printf("%d\n", **in); //1
printf("%d\n", *(*in+1)); //2
printf("%d\n", **(in+1)); //5
<예제>
#include <stdio.h>
#include <stdlib.h>
#define N 3
int main(void){
int (*in)[N], *out, sum=0;
in = (int (*)[N]) malloc(N * N * sizeof(int));
out = (int *)in;
for(int i=0; i < N*N; i++) out[i] = i;
for(int i=0; i < N; i++)
sum += in[i][i];
printf("%d", sum);
return 0;
}
// 12
▶ molloc: 동적으로 메모리 할당
▶ sizeof(int) = 4byte (이 문제에선 크게 신경 x)
※ 유튜브 흥달쌤 깨알 C언어 특강을 직접 정리한 내용입니다