c++基础问题

如果i是int型变量,p和q是指向i的指针,下列哪个赋值是合法的?
(1) p = i; (2) p = &q; (3) p = *q; (4) *p + &i;
(5) *p = q; (6) &p = q; (7) p = q; (8) *p = *q;

(1)不合法,指针变量不能赋值给整型变量。
(2)不合法,指针的指针(&q)不能赋值给指针。
(3)不合法,整型变量不能赋值给指针。
(4)合法,整型变量可以和指针变量相加。注意这句虽然语法没错,但是逻辑是错的。
(5)不合法,指针不能赋值给整型变量。
(6)不合法,指针变量不能赋值给指针的指针。
(7)合法。指针可以互相赋值。
(8)合法。整型变量可以相互赋值。

总结,相同类型的变量可以相互赋值,不同类型不能相互赋值,指针变量可以和整形变量进行加减运算。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-23
4的表达式是对的,但不是赋值,与题目不符。如果是*p=&i,则是错的。
7是合法的且是赋值。
8是合法的且是赋值。
其它都是错的。

应该选7、8。
赋值要求两边数据类型和指针类型都相同。
1,左边是int*,右边是int,错。
2,左边是int*,右边是int**,(即左边是一级整型指针,右边是二级整型指针),错。
3,左边是int*,右边是int,错。
5,左边是int,右边是int*,错。
6,左边是int**,右边是int*,错。
7,左右两边都是int*,对。
8,左右两边都是int,对。本回答被提问者和网友采纳
第2个回答  2012-12-23
(7)(8)肯定是合法的啊,两者的类型相同啊。
第3个回答  2012-12-23
应该第(5)个是合法的,不过没有什么意义。