c언어 2

[메모리] 엔디언(Endianness)과 포인터 캐스팅(casting)

이번 포스팅에서는 메모리 주소와 관련된 개념인 엔디언과 포인터 캐스팅에 대해 다루어 보려고 합니다.1. 엔디언(Endianness)이란?컴퓨터 메모리는 바이트(byte) 단위로 구성되어 있습니다.int와 같은 여러 바이트로 이루어진 데이터 타입을 메모리에 저장할 때, 바이트들의 순서를 정하는 방식이 바로 엔디언입니다.엔디언에는 크게 두 가지 방식이 있습니다.빅 엔디언(Big Endian): 가장 큰 바이트(최상위 바이트)를 가장 작은 주소에 저장하는 방식입니다. 사람이 숫자를 읽는 방식과 유사해 직관적입니다.리틀 엔디언(Little Endian): 가장 작은 바이트(최하위 바이트)를 가장 작은 주소에 저장하는 방식입니다. 대부분의 x86 아키텍처(인텔, AMD 등)가 이 방식을 사용합니다.예) 16진수 ..

[C] 2차원 배열의 포인터 연산으로 메모리 주소값 찾기

이번 포스팅에서는 C언어에서 2차원 배열과 메모리 주소와의 관계에 대해 알아보고, &, *, + 같은 포인터 연산자가 어떻게 동작하는지 예제를 통해 자세히 뜯어보려고 한다.포인터를 잘 이해하면 임베디드의 핵심인 메모리를 잘 다루는 데 도움이 된다고 하니 잘 익혀두는 것이 좋겠다. 우선 다음의 2행 3열의 배열의 각 요소들이 메모리에 어떤 순서로 저장되는지 살펴보자. int main(void){ int a[2][3] = {{0, 1, 2}, {3, 4, 5}};} 먼저, int a[2][3] = {{0, 1, 2}, {3, 4, 5}}; 배열의 메모리 구조를 이해하는 것이 중요하다.C 언어에서 2차원 배열은 행(row) 우선으로 메모리에 연속적으로 저장된다.int의 크기가 4바이트이므로, 각 요소의 주소..