programming/c

[DAY 07] 포인터 2

1. 

어디 값인지는 차후의 문제이다.

정체는 나중 문제다.


2. 문제는 address다 => 주소도 차원이 있다!

[ ], *


포인터의 주소를 알면 그 값을 마음대로 조정할수있다 

포인터 장점 : 주소를 암으로써 그 값을 읽고, 쓰고 할 수 있다.

포인터란? 주소를 저장하는 변수


주의 : 포인터를 잘못 가리키면 데이터 손실 등의 심각한 문제를 초래한다. 그래서 주소값을 정확하게 넘겨주어야 한다.


포인터의 기능


1. 오직 주소(address)만 받을 수 있다. (꼭 주소값을 넣어라는 얘기)

2. 받은 주소의 값(value)을 읽을 수 있다.

3. 받은 주소의 값을 변경시킬 수 있다.

4. 주소 이동이 가능하다.


따라서 정확한 주소값을 주는 것이 중요하다


포인터 선언방법


1. 오직 주소(address)만 받을 수 있다. (꼭 주소값을 넣어라는 얘기)

가리키는 Type *변수명;



Call by address


이상적인 것은 call by name



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
void main(void)
{
    int *ptr;
    int n[] = { 51022343644 };
    ptr = n;
 
    printf("%d "*ptr++);        printf(" %d \n"*ptr);
    printf("%d "*ptr+1);        printf(" %d \n"*ptr);
    printf("%d "++*ptr);        printf(" %d \n"*ptr);
    printf("%d "*(ptr+1));     printf(" %d \n"*ptr);
    printf("%d "*ptr+=1);     printf(" %d \n"*ptr);
    printf("%d "*++ptr);        printf(" %d \n"*ptr);
    printf("%d ", (*ptr)++);     printf(" %d \n"*ptr);
}
cs

포인터를 잘 이해했는지?