C 함수에 이미 포인터가 선언되어 있지만 아직 값이 할당되지 않은 경우를 가정 해 보겠습니다. 우리는 예제를 위해 int를 사용할 것이다.C 고정 크기 배열의 기존 포인터
int *ptr;
기능의 목표는 ptr
힙에 동적 메모리, 그래서 아무 malloc
전화를 할당 할 수 없습니다. 대신 고정 된 크기의 배열 n
을 가리 키기를 원합니다. 나는과 같이이 작업을 수행 할 수 알고 : 우리는 기능, 즉, 많은 포인터 필드의 모든 필요 구조체이 여러 번 수행해야하는 경우
int arr[n];
ptr = arr;
그러나, 코드를 읽고 매우 지저분한 하드 얻을 수 고정 된 길이의 배열을 가리 키기 위해. 한 줄로이 작업을 수행하는 더 좋은 방법이 있습니까? 나는 아래에 비슷한 생각했지만, 너무 모호하고 uncompilable 같습니다
이int *ptr;
// Many other things happen in between...
ptr[n];
이 *** 수정 *** 여기
, 좀 더 답변을 안내하는 데 도움이 될 수 아래의 추가 정보 (말을하지 현재의 답변이 좋지 않음). 내 유스 케이스에서는 포인터가 구조체에 선언되고 함수에서 포인터를 배열에 할당하려고합니다. 나는 (모든 포인터는 고정 길이 배열을 가리 키도록) 아래의 코드보다이 작업을 수행 할 수있는 간단한 방법이 있는지 알고 싶어 :이 명확한 경우처럼 보인다
struct foo {
int* a;
short* b;
char* c;
...
};
void func(void) {
struct foo f;
int n = ...;
int tempArr1[n];
f.a = tempArr1;
short tempArr2[n];
f.b = tempArr2;
char tempArr3[n];
f.c = tempArr3;
...
}
이것은 모호한 것 이상입니다. 메모리가 런타임이나 컴파일 타임에 할당되지 않은 경우 메모리 오류가 발생할 수 있습니다. – Hogan
왜'ptr'이 필요한가요? 왜 'arr'을 직접 사용하지 않는가? –
@JamesMcLaughlin - 그는 어떻게 보이는지 싫어 해요. – Hogan