포인터란 무엇인가 ? 



포인터 변수 :  메모리의 주소 값을 저장하기 위한 변수이다 ! 

ㄴ 주소 값 => 정수 



1
2
3
4
5
6
7
8
int main(void)
{
    int num=7;
    int * pnum;      // 포인터 변수 pnum 의 선언
    pnum = #    // num의 주소값을 포인터 변수 pnum 에 저장
 
}
 
cs


여기서 pnum은 포인터 변수이다.


int * 은 int형 변수의 주소 값을 저장하는 포인터 변수의 선언이다.





& 연산자와 * 연산자



변수의 주소 값을 반환하는  & 연산자 





포인터가 가리키는 메모리를 참조하는 * 연산자




다양한 포인터 형이 존재하는 이유 !




==> 이렇듯 포인터의 형은 메모리 공간을 참조하는 기준이 된다.



포인터와 배열


배열의 이름은 무엇을 의미하는 가? ==> 포인터


배열의 이름은 포인터이다. 단, 그 값을 바꿀 수 없는 '상수 형태의 포인터 이다.'





 포인터 연산





중요한 결론 !  arr[i] == *(arr+i)


: 배열 한 칸을 옮긴다. 





배열과 포인터 비교


char str[20] = "a b c d"    vs       char *str = "a b c d"


str = "def "    불가능                  1. 문자열이 메모리 공간에 저장 

2.  0x0013 이라느 주소 값 반환 




두 가지 형태의 문자열 비교 






포인터 배열


int * arr1[20];        // 길이가 20인 int 형 포인터 배열

double * arr2[30];    // 길이가 30인 double형 포인터 배열












+ Recent posts