2017-03-27 4 views
0

나는 나에게 할당 된 메모리에 대한 포인터를 줄 것이다 정수 배열정수 배열을 특정 주소에 할당하는 방법은 무엇입니까?

ptr=malloc(length*sizeof(int)); 

메모리를 할당하려합니다. * (ptr + k)를 사용하여 값에 액세스 할 수 있음을 이해합니다. 여기서 k는 정수 배열의 위치입니다. 내가

allocarray[k] 

에 저장된 값에 액세스 할 수 있도록 그러나

int allocarray[length]; 

다음은 주소의 PTR을 allocarray 할당하는 새 배열을 정의하는 방법은 무엇입니까? 나는 작동하지 않는 다음을 시도했다.

allocarray=ptr; 

도움을 주셔서 감사합니다.

+1

'int * allocarray'라고 쓰면됩니다. 그리고 나서'allocarray = ptr;'을 호출한다. –

+5

하지만 이미'ptr [k]'라고 쓸 수 있습니다. 먼저 다른 변수에 할당 할 필요가 없습니다. –

+2

또는 단지'* (ptr + k)'의 약자 인'ptr [k]'라고 써주십시오. –

답변

1

위와 같이 배열을 선언하면 자동으로 할당됩니다. 그러나, 당신은 말 :

int *allocarray = (int *)malloc(length*sizeof(int)); 

여전히 구문 allocarray[k]를 사용하여 요소 K에 액세스 할 수 있습니다.

+1

'malloc'의 결과를 캐스팅하지 마십시오. – letmutx

+0

(int *) 부분이 필요한 이유는 무엇입니까? – Mark

+2

... [tag : c]를 사용하지 않았습니다. – LPs

관련 문제