포인터란 무엇인가 ?
포인터 변수 : 메모리의 주소 값을 저장하기 위한 변수이다 !
ㄴ 주소 값 => 정수
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형 포인터 배열