>
int t[10];
int * u = t;
cout << t << " " << &t << endl;
cout << u << " " << &u << endl;

출력 :

0045FB88 0045FB88
0045FB88 0045FB7C

u 의 출력  말이됩니다.

나는 t 이해  그리고 &t[0]  같은 가치를 가져야하지만 어떻게 &t  또한 동일합니까? 실제로 무엇을 의미하지 않습니까?

  • 답변 # 1

    와이즈 비즈  는 표현식에서 자체적으로 사용되며, 배열에서 포인터로의 변환이 발생합니다. 그러면 배열의 첫 번째 요소에 대한 포인터가 생성됩니다.

    와이즈 비즈   t 의 논쟁으로 사용됩니다  연산자, 그러한 변환이 발생하지 않습니다. 와이즈 비즈  그런 다음 t 의 주소를 명시 적으로 가져옵니다.  (배열). 와이즈 비즈  배열 전체에 대한 포인터입니다.

    어레이의 첫 번째 요소는 메모리에서 전체 배열의 시작과 동일한 위치에 있으므로이 두 포인터의 값은 동일합니다.

  • 답변 # 2

    & 의 실제 유형   & 입니다 그래서 t  배열의 주소입니다.

    또한 &t  묵시적으로 t 로 변환 그래서 int[10]  배열의 첫 번째 요소의 주소로변환

  • 답변 # 3

    &t 라는 변수가 없습니다 변경할 수 없으므로. 이름 int[]  단순히 첫 번째 요소의 주소를 나타내며 그와 관련된 크기도 있습니다. 따라서 주소의 주소를 가져 오는 것은 실제로 의미가 없으며 C는 주소를 주소로 "축소"합니다.

    함수의 경우에도 같은 일이 일어납니다 :

    int*
    
    

    t 의 주소를 보유한 변수가 없으므로 같은 것을 인쇄해야합니다 주소를 가져올 수 있습니다.

    t

  • 이전 python - 케 라스 모델의 학습 속도 얻기
  • 다음 powershell - xls를 xlsx로 변환하기 위해 ConvertTo-ExcelXlsx (ImportExcel) 사용