:C++에서 알려진 크기의 배열을 반환합니까? I는 공지 된 크기의 배열을 전달할 수 있다면
void fn(int(*intArray)[4])
{
(*intArray)[0] = 7;
}
이유는 하나의 반환 할 수 여기
int intArray[4] = {0};
int(*)[4] fn()
{
return &intArray;
}
에서,이 ")"에서 "는 (*)"생성 " 구문 오류 :) ".
:C++에서 알려진 크기의 배열을 반환합니까? I는 공지 된 크기의 배열을 전달할 수 있다면
void fn(int(*intArray)[4])
{
(*intArray)[0] = 7;
}
이유는 하나의 반환 할 수 여기
int intArray[4] = {0};
int(*)[4] fn()
{
return &intArray;
}
에서,이 ")"에서 "는 (*)"생성 " 구문 오류 :) ".
[4]
은 변수 정의에서 변수 이름 뒤에가는 것처럼, 함수 이름 뒤에 이동이 매우 모호한 구문은 이후로,
int (*fn())[4]
{
return &intArray;
}
경향 그것을 읽는 모든 사람에게 혼란 스럽기 때문에 배열에 대한 포인터가 필요한 특별한 이유가 없다면 배열을 간단한 int*
으로 반환하는 것이 좋습니다.
또한 타입 정의와 함수 정의를 단순화 수 :
typedef int intarray_t[4];
intarray_t* fn() { ... }
당신은 반환 할 수 int**
또는 void *. 두 가지 모두 배열의 크기에 대한 많은 정보를 가지고 있습니다. –
Its not allowed to return arrays from functions, but there are workarounds합니다. 예를 들어
, 다음 코드
int fn()[4] {
...
다양한 온라인 컴파일러에 의해 허용되지 않습니다; 나는 컴파일러의 가장 표준 다음 중 하나가 될 것으로 간주됩니다 꼬모 온라인 컴파일러에 그것을 시도, 심지어 이완 모드로 말한다 :
이
error: function returning array is not allowed
또 다른 포스터는 int**
를 반환 제안 ; 이 작업은 가능하지만 스택 할당이 아닌 힙 할당 메모리를 반환하는 경우 매우주의해야합니다.
알려진 크기의 배열에 대한 포인터를 전달 중입니다. C++에서 참조를 역 참조하지 않고 배열처럼 동작하는 참조가 더 나을 수도 있습니다. –