C언어/Study
[C언어 공부] 주소와 포인터 차이
이렁부너
2024. 8. 21. 00:05
주소와 포인터 차이
- 주소는 변수에 할당된 메모리 저장 공간의 시작 주소 값이고 포인터는 그 값을 저장하는 또 다른 메모리 공간. 따라서 특정 주소값은 바뀌지 않지만 포인터는 다른 주소를 대입해 그 값을 바꿀 수 있음
- 즉, 주소는 상수 포인터는 변수
int a,b; // 일반 변수 선언
int *p; // 포인터 선언
p = &a; // p가 a를 가리키도록 설정
p = &b; // p가 b를 가리키도록 바꿈
- 두 포인터가 같은 주소를 저장하는 일. 하나의 변수를 동시에 가리키는 일도 가능
int a; // 일반 변수 선언
int *pa, *pb; // 가리키는 자료형(여기서는 int형)이 같은 두 포인터
pa = pb = &a; // pa와 pb에 모두 a의 주소를 저장한다.
*pa = 10; // pa가 가리키는 변수 a에 10 대입
printf("%d", *pb); // pb가 가리키는 변수 a 값 10 출력
&a = &b; // a의 주소를 b의 주소로 바꾸는 건 불가능
- 주소도 포인터처럼 간접 참조 연산자를 사용할 수 있지만, 상수이므로 대입 연산자 왼쪽에 올 수 없음