반응형

과거의 유산들/C 4

포인터 변수 크기 및 포인터 주소 간격

포인터 변수의 크기는 메모리 저장용량에 따라 달라진다. 32bit는 4바이트, 64bit는 8바이트로 포인터 변수의 크기는 결정된다. 왜냐하면 메모리 주소로 표현 가능한 숫자의 크기만큼 포인터 주소로 가질 수 있기 때문이다. 32bit에서는 40억까지의 주소표현이 가능하고 64bit는 1800경까지 가능하다. 포인터 주소가 가르키는 변수의 자료형에 따라 주소 간격이 달라진다. int는 4바이트, char는 1바이트,double은 8바이트,,, 이것은 자료형의 크기만큼 간격을 벌린것이고, 간격을 벌린만큼 그안에 데이터를 입력한다.

c 배열 인덱싱

c에서 배열은 포인터로 arr[2]라고 한다면 arr첫 주소값에서 +2만큼의 주소에 위치한 값을 읽는 것이다. 따라서 -1을 한다면 arr첫 주소에서 -1을 빼는것이기에 잘못된 메모리 접근으로 안된다. 또한 초기화 시 특정값(예를 들어 정수 23)으로 모든 배열에 초기화를 하고 싶으면 for문으로 써야 한다. 그냥 arr[10] = {23}이렇게 써버리면 arr[0]만 23으로 초기화 되고 나머지는 0으로 초기화 된다.

2차원 배열 정리 글

https://wonit.tistory.com/527 [C 언어] 포인터로 2차원 배열 다루기 (주소 접근 및 원소 값 접근) 2차원 배열의 형태 우리가 2차원 배열과 포인터에 대한 상관관계를 파악하고 조작하기 위해서는 2차원 배열이 메모리에 어떻게 저장되는지 알아야 한다. 다음과 같은 배열이 존재한다고 가정해 wonit.tistory.com https://blog.naver.com/PostView.nhn?blogId=sharonichoya&logNo=220529804336 C언어 2차원배열(이중포인터) 동적메모리할당 * 동적메모리 할당에 대해서는 이미 몇번의 포스팅에서 이야기 한적이 있습니다. 이번 포스팅에서는... blog.naver.com