C에서 배열의 길이를 구하는 방법은 무엇입니까?"크기"가 해결책입니까?
중복 가능성:
C 프로그래밍 언어의 배열 크기는?
C-Array가 함수로 전달될 때 C-Array의 크기() 값이 잘못된 이유는 무엇입니까?
아래 코드를 보고 제가 이렇게 사용했을 때 "sizeof" 키워드의 차이점이 무엇인지 제안해 주십시오.
#include<stdio.h>
#include<conio.h>
void show(int ar[]);
void main()
{
int arr[]={1,2,3,4,5};
clrscr();
printf("Length: %d\n",sizeof(arr));
printf("Length: %d\n",sizeof(arr)/sizeof(int));
show(arr);
getch();
}
void show(int ar[])
{
printf("Length: %d", sizeof(ar));
printf("Length: %d", sizeof(ar)/sizeof(int));
}
그러나 출력은 다음과 같습니다.
출력:
길이: 10
길이: 5
길이: 2
길이: 1
한 어레이에서 다른 어레이로 전체 데이터를 가져오려면 어떻게 해야 합니까?
아시는 분 있으면 추천해 주세요.
배열은 함수 호출의 포인터로 감쇠합니다.다음을 포함하여 포인터로만 표시되는 배열의 크기를 계산할 수 없습니다.sizeof
.
명시적 인수를 추가해야 합니다.
void show(int *data, size_t count);
통화에서 다음을 사용할 수 있습니다.sizeof
실제 어레이에 대한 요소 수 계산:
int arr[] = { 1,2,3,4,5 };
show(arr, sizeof arr / sizeof *arr);
참고:sizeof
의 단위로 크기를 제공합니다.char
그렇기 때문에 본질적으로 무엇에 의한 구분.sizeof (int)
필요하지 않으면 너무 높은 가치를 얻을 수 있습니다.
또한, 관심과 청결의 관점으로서,sizeof
함수가 아닙니다.괄호는 인수가 형식 이름일 때만 필요합니다. 인수는 캐스트와 같은 표현식이기 때문입니다(예:sizeof (int)
) 당신은 종종 실제 유형을 이름을 짓지 않고도 도망칠 수 있습니다.sizeof
대신 데이터로.
그렇기 때문에 배열을 사용하는 함수를 작성할 때 두 개의 매개 변수가 선언됩니다.하나는 배열에 대한 포인터이고 다른 하나는 배열의 크기를 정의합니다.
show()는 2바이트에 저장된 어레이의 주소를 가져옵니다.그것을 int *ar라고 생각하세요.
언급URL : https://stackoverflow.com/questions/9413046/how-to-get-the-length-of-an-array-in-c-is-sizeof-a-solution
'programing' 카테고리의 다른 글
세 개의 테이블을 안쪽 접합 (0) | 2023.07.09 |
---|---|
EXISS 대 ISISS 절의 가입 및 사용 (0) | 2023.07.09 |
시간 부분을 무시하고 T-SQL의 날짜 비교 (0) | 2023.07.09 |
16진수를 사용하여 Excel 셀의 뒤 색상을 변경하면 Excel이 스프레드시트에 완전히 다른 색상으로 표시됩니다. (0) | 2023.07.09 |
mysql 외래 키를 사용하여 한 테이블에서 다른 테이블로 데이터 복사 (0) | 2023.07.09 |