若有说明:intij=2*p=&i;,则能完成i=j赋值功能的语句是()。
时间: 2023-12-14 13:38:01 浏览: 27
由于 `intij=2*p=&i`,所以 `*p` 就是 `i` 的值。因此,可以使用以下语句实现 `i=j` 的赋值功能:
```
j = *p;
```
相关问题
已知: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 n=2,*p=&n,*q=p;,则以下非法的赋值语句是()。 A. n=*q; B. p=n; C. p=q; D. *p=*q;
选项 B. p=n; 是非法的赋值语句。
在给指针变量赋值时,需要注意指针类型和被赋值的类型必须匹配。根据这个条件,选项 A、C 和 D 都是合法的语句。
- A. n=*q;:将指针 q 指向的内存地址中的值赋给变量 n,这是合法的操作。
- C. p=q;:将指针 q 的值赋给指针 p,它们都是指向同一内存地址的指针,这是合法的操作。
- D. *p=*q;:将指针 q 指向的内存地址中的值赋给指针 p 指向的内存地址中的值,这也是合法的操作。
选项 B. p=n; 中,n 是一个整型变量,而 p 是一个整型指针变量,它们的类型不匹配。因此,这是非法的赋值语句。