#include <iostream>
void f(const int * & p)
{
int i =0;
i = p[0];
std::cout << i << std::endl;
}
int main()
{
int * p =new int[1];
p[0] =102;
f(p);
return 1;
}
Компилятор gcc выдает ошибку для этого кода:
prog.cpp: In function ‘int main()’:
prog.cpp:16: error: invalid initialization of reference of type ‘const int*&’ from expression of type ‘int*’
prog.cpp:5: error: in passing argument 1 of ‘void f(const int*&)’
Но если я изменю функцию "f" на
void f(const int * const & p)
Все хорошо. Может кто-нибудь объяснить, почему const ведет себя так? спасибо.