*a
b =1;
c= rand()%40
d
이렇게 4개의 변수가있는데
a를 동적할당한뒤 (임의의 크기)
*(a+b) = c
를 하고
d = *(a+b) 를하면
c와 d의 값이 같아지던데
이게 어떻게 되는건지 설명좀 해주실수 있나요 ㅠㅠ
일단 *(a+b)의 개념이 이해가 되지 않습니다..
저게 변수처럼 써져서 되는 뭐 그런건가요??
*a
b =1;
c= rand()%40
d
이렇게 4개의 변수가있는데
a를 동적할당한뒤 (임의의 크기)
*(a+b) = c
를 하고
d = *(a+b) 를하면
c와 d의 값이 같아지던데
이게 어떻게 되는건지 설명좀 해주실수 있나요 ㅠㅠ
일단 *(a+b)의 개념이 이해가 되지 않습니다..
저게 변수처럼 써져서 되는 뭐 그런건가요??
a는 주소값이고 주소값은 0xCDCDCDCD처럼 16진수 정수로 들어가있음. 정수에 1을 더했으니 a의 다음 주소값이겠지? - dc App
ㄴ 아하 그러면 a의 다음 배열에 값이 저장되는거군요. 감사합니다
a의 주소값은 할당한 메모리의 시작지점임. 만약 malloc으로 메모리를 10만큼 할당했으면, 주소값에 1을 더했다고 10칸 뒤로 가는게 아님. 메모리의 시작지점+1을 가리키는거 - dc App
ㄴ그런데 생각해보니 왜 이렇게 코딩하는건가요? 그냥 배열로 하면 편하지않나...?
실제로 저렇게 코딩 절대안함. 포인터 저렇게 가르치는것도 한심하다고 생각함
c의 값을 *(a+b)에 넣고 *(a+b)의 값을 d에 넣으니깐 같음. 포인터 설명한다고 보통 가상메모리 구조도 이야기할텐데 나중에 자료구조 수업때 연결리스트 배우면서도 이 내용 또 나오니 이해하는게 좋음.