int k=2;int*p1,*p2;p1与p2均指向k那么k=*p1+*p2 p2=k p1=p2 k=*p1*(*p2)以上哪个不能正确赋值
时间: 2023-09-29 09:02:47 浏览: 99
以上表达式中,最后一个表达式 `k=*p1*(*p2)` 不能正确赋值。
原因是在这个表达式中,`*p2` 指向的是变量 `k` 的值,而 `*p1` 指向的是变量 `k` 的地址。因此,对 `k` 进行赋值时,使用 `*p1` 和 `*p2` 的值来计算,而不是直接将 `*p1` 和 `*p2` 赋值给 `k`。正确的表达式应该是 `k = *p1 + *p2; p2 = k; p1 = p2;`。
相关问题
int k=2;int*p1,*p2;p1与p2均指向k那么k=*p1+*p2 p2=k p1=p2 k=*p1*(*p2)中那个赋值是错误的
在表达式 `k=*p1*(*p2)` 中,赋值操作是错误的。
原因是,`*p1` 指向的是变量 `k` 的地址,而 `*p2` 指向的是变量 `k` 的值。因此,在这个表达式中,我们不能将 `*p1` 和 `*p2` 的值相乘并赋给变量 `k`。正确的表达式应该是 `k = *p1 + *p2; p2 = k; p1 = p2;`。
int k=2;int *p1,*p2;且p1与p2均指向变量k,下面不能正确执行赋值语句是k=*p1+*p2; p2=k ; p1=p2 ; k=*p1*(*p2);
下面不能正确执行赋值语句是 p1=p2;。
因为p1和p2都是指向int类型的指针变量,而p2是一个int类型的变量。在这种情况下,将p2的值赋给p1是不合法的,因为它们的类型不匹配。正确的做法是将p2的地址赋给p1,即 p1=&p2; 。
所以正确的代码应该是:
```c++
int k=2;
int *p1, *p2;
p1 = &k;
p2 = &k;
k = *p1 + *p2;
p2 = &k;
p1 = p2;
k = *p1 * (*p2);
```
阅读全文