误解1: &运算符返回一个地址
解释: &叫做取址运算符,运算的结果是返回一个指向某个数据类型对象的指针。
int a=1; int *p = &a;
&a不是地址,&a是指向a的指针,不是把地址给指针变量p,而是把指针直接赋值给变量p
误解2: 数组和指针一样
解释: 数组是一种数据结构,包含了一些同一类型数据的组合内存空间,指针是指向某一个数据类型的地址,之所以误解是因为数组作为右值表达式时会转账为指向首元素的指针
误解3: 数组名是常指针,所以不可赋值
解释: 数组名是数组的标识符,代表的数组,跟指针没关系。之所以不能赋值,因为数组是不可修改的左值。误解为指针因为数组作为右值表达式时会转账为指向首元素的指针
误解4:数组名是不是左值,所以不可以赋值
解释: 上面就说了,数组名是数组的标识符,之所以不能赋值,因为数组是不可修改的左值,左值包含了可修改左值和不可修改左值。
误解5:&数组名 是指针的指针
解释: 数组作为左值时不会转换为首元素的指针,代表的本来的意思:数组。&和sizeof都需要一个左值表达式的操作数,这个时候数组名代表的是数组,&数组名是指向该数组的指针,结果是一个右值表达式。
标签:误解,左值,数组名,数组,指针,赋值 From: https://www.cnblogs.com/fuyun2000/p/16882754.html