티스토리 뷰
메모리
- 컴퓨터 메모리 ->데이터 보관 장소
- 바이트(8 bits) 단위로 주소가 지정
- 모든 변수는 주소를 가진다.
포인터
- 포인터란 메모리주소를 값으로 가지는 변수이다.
- 메모리주소? => 정수
type-name * variable-name;
ex) int * ptr;
- 연산자 &는 변수로부터 그 변수의 주소를 추출하는 연산자
int * ip -> 포인터 변수
y= *ip ->ip라는 포인터 변수에 들어있는 주소에 해당하는 값을 y에 넣음.
아래 예제로 살펴보면 ip 포인터 변수의 값은 1028이고 1028주소에 해당하는 값은 1이므로
y =*ip이면 y에는 1이 들어가게 된다.
포인터와 배열
배열의 이름은 배열의 시작 주소를 저장하는 포인터 변수이다
int calculate_sum(int * arr)
int calculate_sum(int arr[])
포인터 arithmetic
- a[1]은 *(a+1) , a[i]은 *(a+i)
- a가 정수형 변수이면 a(주소값)가 1000이라면 a+1은 1004가 된다.
int data[] ={1,2,3}
int *p =&data[0];
p ,p+1,p+2 값을 확인해보면
4씩 증가하는것 확인
int는 4바이트 이므로! char 배열이라면 char는 1바이트 이므로 1씩 증가 할것!
'Computer Engineering > 자료구조' 카테고리의 다른 글
자료구조-동적 메모리 할당 (0) | 2018.01.31 |
---|
댓글