C언어 포인터 쓰는 이유?? 가장 쉬운 설명



C언어 포인터 쓰는 이유?? 가장 쉬운 설명


처음에 포인터를 공부할 때 왜 포인터를 쓰지?? 쓰는 이유가 뭘까??

이걸 배워야 되나?라고 생각을 했다.

포인터를 배우면서 자꾸 포인터가 왜 쓰일까라고 질문만 했다.

근데 이 밑에 글을 보면서 한 번에 이해가 갔다




포인터를 사용함으로써 복사본을 만들지 않고 주소만 알려줌으로 해서

용량 및 처리시간에 이득을 볼 수 있습니다.

메모리가 한정적이거나 처리시간이 중요한 시스템에서 사용할 경우 도움이 되겠지요.

예를 들어 다음과 같은 코드가 있을 때



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
typedef struct adc
{
    int a[10000];
    char b[10000];
}S_ABC;
 
void call_you(S_ABC abc_struct_2)
{
    /* ~~~~ */
}
 
void main()
{
    S_ABC abc_struct_1;
    call_you(abc_struce_1);
}
cs

main에서 abc_struct_1이라는 20000개의 배열을 가진 거대한 구조체 변수를 만듭니다.
이 구조체에 있는 내용을 call_you라는 함수에서 쓰기 위해 인자로 보내면
abc_struct_1이라는 구조체 변수의 내용이 abc_struct_2라는 구조체 변수가 만들어지면서 복사가 됩니다.
그럼 40000개의 배열이 메모리 차지하게 되는 거지요...
포인터를 써서 abc_struct_1에 찾아가서 처리하라고 하면 추가로 20000개의 배열을 만들지 않고도 똑같은 일을 할 수 있습니다.



포인터 활용법은 이렇게 된다.
포인터 활용법을 알고 있으니 이제 공부가 더 잘 되겠다.
포인터가 매우 중요하다고 하는데 이제 왜 중요한지 알게 되었다.




2018/07/17 - [프로그래밍/C] - C언어 함수 포인터 쓰는 이유?? 가장 쉬운 설명



댓글

Designed by JB FACTORY