포인터 2

컴퓨터의 주소표현 (포인터의 크기 & 표현가능한 메모리 주소가 크면 좋은 이유)

컴퓨터의 주소개념을 이해할때 헷갈리는 가장 큰 이유는 개인적으로 주소를 나타내는 방법도 "숫자"이고 안에 들어가는 값도 "숫자"이기 때문이라고 생각한다. 무슨 말이냐면, 우선 어떤 호텔이 있다고 생각해보자. 이 호텔은 101호부터 503호까지 있는 5층짜리 호텔이다. 자, 이 호텔이 만약 101호부터 1003호까지 있는 10층짜리 호텔이면, 당연히 손님을 많이 받을 수 있을 것이다. 결론부터 이야기하면 컴퓨터에서 표현가능한 메모리 주소가 커지면 좋은이유는 호텔이 커지면(방을 많이 가지면) 손님을 더 많이 받을 수 있는 이유와 같다. 아니 방이 많으면 당연히 많은 손님들을 받을 수 있지 않을까? 어려운 논리가 전혀아니다. 컴퓨터도 표현가능한 주소가 많아질수록, 당연히 넣을 수 있는 데이터가 많아진다. 이게..

공부/JUN STUDY 2022.03.30

C언어 배열 시작주소에 연산 (arr+1) 해석

#include #define R 10 #define C 5 int main() { int(*p)[R][C]; //5*10=50개의 배열을 갖는 하나의 포인터 p선언. int arr[10][5]; printf("%p\n", arr); //arr는 int[10][5] printf("%p\n", arr+1); //arr+1은 int[5]를 가리키는 포인터 int[5]* 포인터의 요소가 int[5]일뿐. //int arr[3] 하고 arr+1이 int를 가리키는 포인터라는 것과 같은 이유 printf("%d\n", sizeof(arr)); //arr의 크기는 int[10][5] 배열의 크기 4*5*10 printf("%d\n", sizeof(arr+1)); //arr+1의 크기는 int[5]를 가리키는 포인터..

공부/이모저모 2021.10.19
728x90