한국투자증권 주식매매프로그램 만들기

파이썬 주식매매프로그램 만들기

카테고리 없음

4. 배열과 포인터

토폴로지 2015. 7. 4. 21:27

배열은 말이다...

 

첫 번째 칸의 배열 시작 주소값만 알면 두 번째 칸의 시작 주소 값도 알 수 있어

 

왜?

 

배열은 메모리에 순차적으로 저장되기 때문이지...

 

즉 !!

 

int a[5]; 에서

 

a[0]의 시작주소가 1이라고 하면

 

a[1]은 시작주소가 5라능....

 

왜냐하면 int는 4바이트이고 배열은 메모리에 순차적으로 저장되기 때문에

 

자연히 1에서 4를 더한 값이 a[1]의 시작주소가 되는 것이지...

 

또한 a[0]의 시작주소를 구할려면 앞에 &를 붙이면 된다. 즉 a[0]의 시작 주소는 &a[0]로 구해짐

 

그리고 배열은 포인터와 마찬가지로 +1 을 더하면 해당 사이즈 만큼의 크기가 더해진다.

 

즉 int a[5]에서 &a[0]의 값이 1이라고 가정하면

 

a[0] + 1은 a[0] + sizeof(int)*1 가 되어 1 + 4 = 5가 나온다.

 

즉 a[1]의 주소값이다. 즉 &a[1] !

 

근데 여기서 생각해봐야 할 것이 있다. 바로 연산자 우선순위이다.

 

&도 연산자 이고 []도 연산자이다. 우리가 사칙연산에서 + * 가 섞여있으면 *를 먼저해주는 것 처럼 

 

컴퓨터도 연산자 우선순위에 따라 먼저 계산을 한다.

 

c언어는 []가 &보다 우선수위가 높다. 즉 []가 높은 우선순위이다.

 

따라서 &a[1]이렇게 적으면 a[1]의 주소값을 계산하게 되어있다.

 

이 연산자 우선순위를 여기서 말하는 이유는 중요하기 때문이다.

 

어디서 중요하냐? 우리를 가장 괴롭히는 포인터 배열, 혹은 배열 포인터에서 정말 중요하기 때문이다.

 

[]가 &보다 높다는 것을 꼭 기억하자

 

아오 나중에 적어야지

 

 

반응형