设int *p,i 以下正确的语句是 A.*p=10; B.i=p; C.i=*p; D.p=2* p+1;
时间: 2024-05-28 18:10:21 浏览: 26
正确的语句是C.i=*p;。这条语句将p所指向的整数值赋给了变量i。其他语句存在一些问题:
A.*p=10;:这条语句试图将整数值10赋值给p所指向的整数,但是p是一个指针,无法直接赋值。
B.i=p;:这条语句试图将指针p赋值给变量i,但是i是一个整数类型的变量,无法存储指针。
D.p=2*p1;:这条语句试图将指针p的值赋为2乘以p1的地址,但是p1是一个未定义的变量,无法使用。同时,这条语句也存在类型错误,因为指针的加减操作是根据指向类型的大小进行的,而不是简单的地址加减。
相关问题
如有下面的语句说明, 则下面赋值表达式合法的是 ( )。 int i, *p; A. *p=*i B. p=i C. p=&i D. *p=&i
正确选项是 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 正确。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)