6일차 예비강의 메모

2015. 2. 23. 21:46창고

728x90
728x90

1. 포인터의 차원이란?

참조할 수 있는 주소의 단계.

0차원 - int a; 

1차원 - int* a : 0차원 포인터의 주소를 가리킴.

2차원 - int** a : 1차원 포인터의 주소를 가리킴.


2. 대입은 같은 차원에서만 가능하다.

같은 차원만 가능함. & 연산을 통해 타입을 승격할 수 있음.


예제)

int *a;

int *b;

int c = 10;


a = c;

b = &c;


a = c는 1차원에 0차원을 대입하는 문장이 되므로 참조할 수 없다.

b = &c는 &는 참조연산자를 이용해 int형 c를 int* 차원으로 승격하여 주소값을 대입해준다.



실제로 이런 문구의 워닝이 뜨며 a = c는 값을 제대로 참조할 수 없다.

주소를 참조하든 안의 값을 참조하던 차원이 같아야 정상적인 연산이 되는 것이다.


아래 코드를 실행 했을때, 정상 참조되지 않은 a는 값을 출력하지 못하고 런타임 에러가 난다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
 
void main()
{
    int* a;
    int* b;
    int c = 10;
 
    a = c;
    b = &c;
 
    printf("b = %d\n"*b);
    printf("a = %d\n"*a);
}
cs



728x90
반응형