인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

SS0615님의 프로필 이미지

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

함수와 재귀함수 (v2)

포인터

해결된 질문

작성

·

104

1

C언어 포인터 강의에서 30:13초에서

int myArray[] = {100,22,34,55,70}

int size = sizeof(myArray)/sizeof(myArray[0]);에서

둘을 나누면 왜 5가 되는 지 자세하게 설명을 듣고싶습니다..!

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요 시원님.

배열에는 똑같은 자료형이 나란히 있어야 합니다.

전체를 잰 다음에 1개에 대한 사이즈로 나눴기 때문에 총 갯수가 됩니다.

 

관련해서 제가 미리 영상을 만들어 둔 것이 있습니다.

참고 부탁드립니다.

 

영상:

https://youtu.be/QvyA27GjgVc

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

오시원님께서 질문하신 sizeof 연산자 사용에 관한 내용에 대해 설명드리겠습니다.

C언어에서 sizeof 연산자는 특정 데이터 타입이나 변수가 차지하는 메모리 바이트 수를 반환하는 연산자입니다.

질문에서 언급하신 코드:

int myArray[] = {100,22,34,55,70};
int size = sizeof(myArray) / sizeof(myArray[0]);

이 코드의 목적은 배열 myArray의 총 요소 개수를 구하는 것입니다.

  1. sizeof(myArray):

    • 이 부분은 배열 전체의 메모리 크기를 바이트 단위로 반환합니다. int형 배열에서 각 요소가 4바이트(32비트)를 차지하기 때문에, myArray의 전체 크기는 5개의 요소 × 4바이트 = 20바이트가 됩니다.
  2. sizeof(myArray[0]):

    • 이는 배열의 첫 번째 요소인 myArray[0]의 크기를 나타냅니다. int형 변수는 시스템에 따라 일반적으로 4바이트를 차지하므로, 이 경우 4바이트가 반환됩니다.

따라서, 두 값의 나눈 결과:

size = sizeof(myArray) / sizeof(myArray[0]);  // 20바이트 / 4바이트 = 5

배열의 총 요소 수인 5가 됩니다. 즉, sizeof(myArray)는 전체 배열의 메모리 크기이고, sizeof(myArray[0])는 개별 요소의 크기이므로, 두 값을 나누면 배열의 요소 갯수가 나옵니다.

관련된 내용을 좀 더 알고 싶으시면 C언어 배열의 총 요소 수 구하기를 참고해보실 수 있습니다. 이 링크에서 포인터와 배열의 관계 및 크기 계산을 보다 심도 있게 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

SS0615님의 프로필 이미지

작성한 질문수

질문하기