如有下面的语句说明, 则下面赋值表达式合法的是 ( )。 int i, *p; A. *p=*i B. p=i C. p=&i D. *p=&i
时间: 2024-05-26 22:13:43 浏览: 53
正确选项是 B。
语句解释:
- `int i, *p;` 声明了一个整型变量 `i` 和一个指向整型的指针 `p`。
- `*p=*i` 是错误的,因为 `*p` 表示指针 `p` 指向的内存地址的值,而 `*i` 表示整型变量 `i` 的值,两者类型不匹配。
- `p=` 是错误的,因为没有给 `p` 赋值,指针 `p` 指向的内存地址是未知的。
- `p=i` 是正确的,将整型变量 `i` 的地址赋值给指针 `p`,使 `p` 指向 `i` 所在的内存地址。
相关问题
已知:int i,j=7,*p=&i;,则与i=j;等价的语句是( ) A. i=**p; B. p=j; C. p=&j; D. *p=j;
正确的选项是 D. `*p=j;`,与 `i=j;` 等价。
首先,定义了整型变量 `i` 和 `j`,并将变量 `j` 的值初始化为 7。还定义了一个指向整型变量 `i` 的指针 `p`,并将其初始化为变量 `i` 的地址。
要将变量 `j` 的值赋给变量 `i`,可以使用赋值语句 `i=j;`。但是,这里需要找到一个与 `i` 等价的表达式,然后将变量 `j` 的值赋给这个表达式。
因为指针 `p` 指向变量 `i` 的地址,所以可以使用 `*p` 来表示变量 `i`。因此,可以使用赋值语句 `*p=j;` 将变量 `j` 的值赋给指针 `p` 所指向的内存地址,即变量 `i` 的值。这样,就实现了将变量 `j` 的值赋给变量 `i` 的效果。
因此,选项 D 正确。
若有int n=10,m=20,*p=&n,*q=&m,则以下赋值话句中错误的是a,p=q,b,* p=*q, p=*q
根据您提供的信息,以下赋值语句中错误的是 `p=*q`。因为 `p` 是一个指向整型变量 `n` 的指针,而 `*q` 是整型变量 `m` 的值,类型不匹配,不能将一个整型值直接赋给一个指针变量。另外,`a` 和 `b` 都是表达式,没有被完整地给出,无法判断它们是否正确。因此,正确的代码应该是:
```c++
int n = 10;
int m = 20;
int* p = &n;
int* q = &m;
*p = *q; // 将 m 的值赋给 n,即将 20 赋给变量 n
```
这样就可以将变量 `m` 的值赋给变量 `n`。