已知:int i,j=7,*p=&i;,则与i=j;等价的语句是( ) A. i=**p; B. p=j; C. p=&j; D. *p=j;
时间: 2024-05-18 20:13:31 浏览: 86
正确的选项是 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 i,j=7,*p=&i;,则与i=j;等价的语句是( ) A. *p=j; B. p=&j; C. i=**p; D. p=j;
与 `i=j;` 等价的语句是选项 B:`p = &j;`。
由于 `p` 是指向变量 `i` 的指针,所以 `*p` 表示变量 `i` 的值。因此,选项 A 中的语句 `*p=j;` 表示将变量 `i` 的值赋值为 `7`,而不是 `j` 的值 `7`。
选项 C 中的语句 `i=**p;` 表示将变量 `i` 的值赋值为指针变量 `p` 所指向的变量的值,但是此时指针 `p` 没有被初始化,其指向的地址是未知的,因此该语句是错误的。
选项 D 中的语句 `p=j;` 表示将指针变量 `p` 的值赋值为 `7`,而不是指向变量 `j` 的地址,因此也是错误的。
因此,选项 B 正确,能够将指针变量 `p` 的值赋值为变量 `j` 的地址,从而使得 `*p` 等价于变量 `j`,实现了 `i=j;` 的效果。
已知:int x 则下面指针变量的语句正确的是______。 int pb=&x; int *pb=x; int *pb=&x; *pb=*x;
正确的语句是:
```c++
int *pb = &x;
```
这句话定义了一个指向整型变量x的指针pb,并将pb初始化为x的地址。
其余三句话都有语法错误:
- `int pb = &x;` 这句话中左边定义的是一个整型变量,右边给出的是一个地址,类型不匹配。
- `int *pb = x;` 这句话中右边给出的是一个整型变量的值,不是地址。
- `*pb = *x;` 这句话中右边的*x是一个未定义的变量名。
阅读全文