请问都哪里错了。求解答

float x=2.5;
char c(65);
int y=x; // ①正确
int &r; // ②错误?为什么
int &rc=c; // ③错误。int型和char型不能引用??
float &px=&x; // ④错误。float &px=x??
char pc=c; // ⑤错误,charp=&c??

②错误?&是取地址符,不能用作申明变量类型可以改成int *r
③④与②同理
⑤是正确的

供参考

float x=2.5;//正确
char c(65);//错误,应为char c[65]
int y=x; // ①正确
int &r; // ②错误,&r是取r的地址 
int &rc=c; // ③错误, 应改为 int c=&rc;
float &px=&x; // ④错误。类型不匹配
char *pc=c; // ⑤错误,c为字符类型 

float x=2.5;
char c(65);
int y=x; // ①正确
int &r; // ②错误?为什么
->不允许单独定义一个引用,引用在定义的时候一定要初始化。
int &rc=c; // ③错误。int型和char型不能引用??
float &px=&x; // ④错误。float &px=x??
->对于3、4两个的原因是一样的,他们都是将变量引用为一个不同类型的:
因为 int 和char、float和int* 类型不一致,首先会执行隐式类型转换,产生一个临时变量。
const char tmp=(char)n、const int* tmp=(int*)n;
这样传给函数的就是一个常量。用一个常量(右值)对非常量类型引用赋值,会出错。
那么要么把式子左边的引用改为const int或const float;要么就使用同类型引用。
引用是在初始化之后就无法进行修改,是说无法再作为其他变量的引用。**
char pc=c; // ⑤错误,charp=&c??
->这个是正确的,是初始化一个名字为pc的char变量并初始化为65的值,即A。