2012-08-07 4 views
-3

나는 배열의 크기가 내가 그것을보고 알고size_t를 사용하여 배열의 크기를 얻습니다. 또한, 어떻게 malloc을 사용하여 배열에 동적으로 메모리를 할당 할 수 있습니까?

x1={1,6,8,9}; 

말을 알고 싶어하지만이 코드 내부에서 발생하고 그 크기는 sizeof의 다른 배열에 영향을 미친다되는 경우, 어떻게 그것을 얻을 수 있습니다. stddef 헤더를 보았지만 구문은 무엇입니까?

std::size_t n=sizeof(x1) 

나는 C가 아닌 C++로 원한다. malloc을 사용하여 배열에 동적으로 메모리를 할당 할 수 있습니까?

main() 외부에서 배열의 크기를 선언하지 않으면 "expression에 포인터와 객체 유형이 있어야합니다"라는 오류가 발생합니다. 내가 계속 바뀌지 않으면 그것을 메인 밖에 정의 할 수 없다. 예를 들어 아래 내가 C로 변환 할 MATLAB에서 코드

지금 체크의 크기가 "P"에 따라, p는 "오류"에 따라

error=65536*((0.5)^layer); 
    for i=1:samp        %% samples*columns 
     if abs(x_cvr(i)- d(i)) >= k 
     p_end=error-1; 
     check1 = zeros(1,p_end,'double'); 
     check2 = zeros(1,p_end,'double'); 
    for p=1:p_end      %% to generate combinations 
      check1(p)=(x_cvr(i))+p; 
      check2(p)=(x_cvr(i))-p; 
     end; 
는 오류가 난 실행할 때마다 변경 "레이어"에 따라 달라집니다 프로그램. 제안을 해주십시오. 미리 감사드립니다.

+3

"질문"에서 많은 관련이없는 질문을하는 것 같습니다. 당신이 정말로 원하는 것이 무엇인지 분명히 할 수 있습니까? – cnicutar

+1

나는 당신의 질문을 이해하지 못합니다.'어떻게 malloc을 사용하여 배열에 메모리를 동적으로 할당 할 수 있습니까? ' – Rsh

+1

-1 : 예제가 C에 명확히 없습니다. –

답변

1

이렇게 여러 질문을 섞어 쓰지 마십시오! 하지만 여전히 ...

배열의 크기는 내가

는 다음과 같은 관용구를 사용하여 배열의 크기를 알고 싶은

는 :

sizeof(x1)/sizeof(x1[0]) 

이의 크기를 계산 전체 배열을 바이트 단위로 나누고 첫 번째 배열 요소의 크기로 바이트 단위로 다시 나누어 배열의 요소 수를 지정합니다. 나는 종종 나 자신이 코드의

#define LEN(x) (sizeof(x)/sizeof((x)[0])) 

장점 중 하나와 같은 매크로를 정의 찾으 보통 컴파일시에 평가 될 수 있으므로 컴파일러는 일반적으로 하나의 정수 상수로 대체하는 것입니다.

가 어떻게 동적으로의 malloc를 사용하여 배열에 메모리를 할당 할 수 malloc을 사용하십니까?

int *arr; 
unsigned nelem = 42; 
arr = malloc(nelem * sizeof(*arr)); 
if (arr == NULL) { 
    fprintf(stderr, "Out of memory.\n"); 
    exit(EXIT_FAILURE); 
} 

지금 arr 대부분 42 개 정수 요소의 배열과 같이 작동합니다 :

은 당신이 뭔가를 할 수 있습니다. 위에서 언급 한 LEN 트릭은 arr에서 실제로 작동하지 않으므로 실제로는 포인터이므로 sizeof(arr)은 할당 된 배열의 크기가 아니라 해당 포인터의 크기가됩니다. 후자를 얻으려면 할당 된 크기를 직접 추적해야합니다. 많은 프로그램에는 malloc 호출과 오류 검사를 결합한 작은 함수 (종종 xalloc)가 포함되어 있습니다.

관련 문제