검색결과 리스트
글
<포인터란?>
포인터는 주소를 저장하는 변수이다. 변수? 그렇다. 변수는 어떤 데이터를 저장하기 위한 사용자들이 만든 공간으로 주로 우리는 숫자, 문자등을 저장하여 사용하였다.
그 개념을 그대로 변수에 주소를 저장하는 것이다.
포인터 변수의 선언에 대해 알아보자.
구조) int* pointer = NULL;
int : 포인터 변수는 주소를 저장하는 변수이다. 그런데 왠 int? 이 자료형은 pointer라는 포인터 변수에 주소를 참조했을때 나타내는 값이 int형이다 라는 의미이다.
pointer : 포인터 변수 이름
NULL : NULL로 초기화 함.
해석 : pointer라는 포인터 변수에 NULL이라는 아무것도 저장하지 않겠다라는 의미이다. 즉, 빈깡통!
<실습>
실습을 통해 포인터 변수가 어떻게 사용되는지 알아보자
-결과-
결과값을 보면 포인터 변수의 값이랑 변수a의 주소와 같은 값이 출력되는 것을 알 수 있다.
이렇듯이 포인터 변수는 변수들의 주소를 저장하는 변수이다!
참고로 모든 포인터 변수의 공간은 4바이트이다. 주소체계를 저장할 수 있으면 되므로 4바이트면 된다.
<실습>
이번 실습에서는 포인터 변수를 이용하여 값을 참조해보자!
-결과-
위 코드를 살펴보자. num1, num2, num3의 변수를 각각 생성하고, 포인터변수 p만을 통해 모든 변수에 값을 대입하고 있다. 즉 간접 접근을 통해서 각각 대상이 바뀌고 바뀌는 대상에 대해 값을 넣어주었다.
<포인터를 사용할 때 주의할 사항>
1. 포인터 변수에 주소를 저장하지 않은 경우이다.
#include <stdio.h>
int main()
{
int* p=NULL;
*p=100;
return 0;
}
이렇듯 포인터 변수 p에 아무 주소도 저장하지 않은 채, 포인터 변수의 참조 값에 100을 저장하려고 하면 당연히 에러가 난다. 왜냐? 참조하는 주소가 없는데 뭘 참조해서 넣겠다는건지...ㅠ
2. 포인터 변수에 임의로 주소를 저장한 경우이다.
#include <stdio.h>
int main()
{
int* p=124532; // 이렇듯 임의로 주소를 저장한다.
*p=100;
return 0;
}
포인터 변수에 저장되는 주소는 메모리 상에 존재하는 주소여야 하기 때문에 124532이런 주소는 어떤 주소인지 알 수 없기 때문에 에러가 난다.
'Programming > C' 카테고리의 다른 글
C언어 - 포인터와 1차원 배열 (0) | 2016.05.16 |
---|---|
C언어 - 함수 포인터 (0) | 2016.05.15 |
C언어 - 2차원 배열, 주소체계 (0) | 2016.05.13 |
C언어 - 배열의 주소와 값의 참조, &연산자, *연산자 (1) | 2016.05.12 |
C언어 - 1차원 배열 (0) | 2016.05.11 |
RECENT COMMENT