Я знаю, что int (*p)[5]
означает указатель, который указывает на массив из 5 дюймов.
Поэтому я кодирую эту программу ниже:
#include <iostream>
using namespace std;
int main()
{
int a[5]={0,1,2,3,4};
int (*q)[5]=&a;
cout<<a<<endl;
cout<<q<<endl;
cout<<*q<<endl;
cout<<**q<<endl;
return 0;
}
На моей машине результат:
0xbfad3608
0xbfad3608 //?__?
0xbfad3608
0
Я понимаю, что *q
означает адрес a[0]
, а **q
означает значение a[0]
, но почему q
имеет то же значение, что и a
и *q
? По моему бедному разуму, это должен быть адрес их! Я полностью сбит с толку. Кто-нибудь, пожалуйста, помогите мне. Пожалуйста!