참조로 배열 전달
참조를 통해 정적으로 할당된 어레이를 전달하는 방법은 무엇입니까?
void foo(int (&myArray)[100])
{
}
int main()
{
int a[100];
foo(a);
}
한다(&myArray)[100]
참조로 배열을 전달하는 의미나 구문이 있습니까?나는 여기서 괄호 뒤에 큰 괄호가 이어지는 것을 이해하지 못합니다.감사해요.
배열 참조를 위한 구문입니다. 사용해야 합니다.(&array)
컴파일러에게 참조 배열이 아닌 배열에 대한 참조를 원한다는 것을 명확히 함int & array[100];
.
편집: 몇 가지 설명.
void foo(int * x);
void foo(int x[100]);
void foo(int x[]);
이 세 가지는 동일한 기능을 선언하는 서로 다른 방법입니다.그들은 모두 약을 복용한 것으로 취급됩니다.int *
매개 변수: 모든 크기의 배열을 전달할 수 있습니다.
void foo(int (&x)[100]);
100개의 정수 배열만 허용됩니다.안전하게 사용할 수 있습니다.sizeof
에x
void foo(int & x[100]); // error
이는 "참고 자료 배열"로 해석됩니다. 이는 불법입니다.
필요한 구문입니다.
void Func(int (&myArray)[100])
100개의 패스 배열int
참고로 매개변수 이름은myArray
;
void Func(int* myArray)
배열을 전달합니다.배열이 포인터로 감쇠합니다.따라서 크기 정보가 손실됩니다.
void Func(int (*myFunc)(double))
함수 포인터를 전달합니다.함수는 다음을 반환합니다.int
그리고.double
매개 변수 이름은myFunc
.
구문입니다.함수 인수에서int (&myArray)[100]
다음을 포함하는 괄호&myArray
필요합니다.만약 당신이 그것들을 사용하지 않는다면, 당신은 통과할 것입니다.array of references
그리고 그것은 왜냐하면.subscript operator []
보다 높은 우선 순위를 가집니다.& operator
.
예.int &myArray[100] // array of references
그래서, 사용함으로써.type construction ()
당신은 컴파일러에게 100개의 정수 배열에 대한 참조를 원한다고 말합니다.
예int (&myArray)[100] // reference of an array of 100 ints
다음은 모든 크기와 유형의 배열을 참조하여 일반 함수를 만듭니다.
template<typename T, std::size_t S>
void my_func(T (&arr)[S]) {
// do stuff
}
배열은 포인터에 의해 기본적으로 전달됩니다.함수 호출 내부의 배열을 수정하여 더 잘 이해할 수 있습니다.
언급URL : https://stackoverflow.com/questions/5724171/passing-an-array-by-reference
'programing' 카테고리의 다른 글
"localhost"에서 사이트를 실행하는 속도가 매우 느림 (0) | 2023.06.11 |
---|---|
R의 전역 변수 (0) | 2023.06.11 |
구성 API vue3에서 디스패처 호출 (0) | 2023.06.11 |
마리아에서 모든 외부 키를 선택하는 방법DB (0) | 2023.06.06 |
Promise와 같은 대기물을 결합합니다.모든. (0) | 2023.06.06 |