2014-11-03 3 views
0

아래 그림과 같이 Test 배열에 할당하는 방법을 이해하는 데 문제가 있습니다.
int (*&Test)[10] = Parray;Test은 10 개의 정수 배열에 대한 포인터에 대한 참조입니다. 나는 완전히 이것을 이해하지 않고 내 연구를 수행 한배열에 할당하는 방법 int (* & Test) [10]?

error: incompatible types in assignment of 'int*' to 'int [10]'|.

다음과 같이

내가 오류입니다. 저는 C++ Primer 5 판을 읽고 있습니다.

int main() { 
    int arr[10]; 
    int n = 5; 
    int *ptr1 = &n; 
    int arr2[10]; 
    int *ptrs[10]; // ptrs is an array of ten pointers 

    // Parray points to an array of ten ints 
    int (*Parray)[10] = &arr; 
    // arrRef refers to an array of ten ints 
    int (&arrRef)[10] = arr2; 

    // Test is a reference to a pointer to an array of ten ints. 
    int (*&Test)[10] = Parray; 

    // How can I assign to Test[0..1..2..etc]? 
    // This is what I am trying to do: 
    Test[0] = ptr1; // Error here 

    return 0; 
} 

Test[0] 등으로 어떻게 할당 할 수 있습니까?

+5

아니요 테스트는 10 개의 정수 배열을 가리키는 포인터에 대한 참조입니다. – texasbruce

+0

^'arr'과 같은 유형입니다. 포인터 배열을 원한다면 어딘가에서 'ptrs'변수를 사용해야합니다. – Aralox

+0

'ptr1'은 초기화되지 않은 포인터입니다. 여기서'ptr1'과'ptrs'로 무엇을하기를 희망하는지 명확하지 않습니다 –

답변

1

그것은해야한다 :

(*Test)[0] = 3; 
(*Test)[1] = 5; 

등 다른 방법이 Test[0][0] = 3; Test[0][1] = 5;를 쓸 수 있지만 그 덜 분명하다 생각합니다.

TestParray과 동일한 유형의 참조입니다. 이것을 역 참조하면 (자), 배열의 구문을 사용할 수있는 10의 int의 배열이됩니다.

2

표현 Test[0]의 유형은 int [10]있는 followi NG 표현 문

Test[0][0] = *ptr1; 

를 사용합니다. 따라서 Test[0][0]int 유형이고 *ptr1 유형은 int 유형입니다. 물론 ptr1은 역 참조 될 수있는 유효한 값을 가져야합니다.

관련 문제