指针问题
若有定义:int aa; C..&aa++C中&小于后置++的优先级所以&aa++等价于
&(aa++)所以先对aa中的元素值加1后,在对aa取址,结果还是aa的地址
故C错
我觉的这个答案有问题,先计算++是因为++和&的优先级一样,所有要用结合性,结合性是从右向左,所以先计算++
&(aa++)是对aa这个元素值加1后,再对整体取址,结果不是aa的地址,请问我的说法对吗 &aa++
&(aa++)
这两种写法是一样的,你的前半部分对于优先级和结合性的理解是对的。但是最后一句理解是不对的
你可以编程看看报错内容,错误如下:lvalue required as unary ‘&’ operand
这个错误是因为你将 & 用在了一个表达式上,但是取地址符只能用在变量上,不能用在任何表达式上,包括这种自增自减表达式。
还有一种写法
(&aa)++
这种写法与前两种就不一样, 但是也会报错,报错内容差不多,但是有区别:lvalue required as increment operand。这个错误是说自增加操作符应用对象错误,其实和上一个是一样的 ,只是上面的写法是 & 的应用对象错误,这次换成了 ++ ,因为自增自减操作符也是只能用在变量上,不能用在表达式上,也不能用在地址上。你可以尝试,对一个数组名使用自增自减,也是会出错的 sunrise085 发表于 2020-9-2 22:26
这两种写法是一样的,你的前半部分对于优先级和结合性的理解是对的。但是最后一句理解是不对的
你可以编 ...
对数组名使用++,不就是第一个元素首地址往后推一个嘛,也就是第二个元素的地址 雨天Zz 发表于 2020-9-2 22:49
对数组名使用++,不就是第一个元素首地址往后推一个嘛,也就是第二个元素的地址
数组名是不能使用++或--的,指针可以。
不信你自己试试 sunrise085 发表于 2020-9-2 23:19
数组名是不能使用++或--的,指针可以。
不信你自己试试
数组名不就是数组第一个元素的指针吗?
页:
[1]