语句“double *p=&x, x;”使指针变量p指向变量x,为什么是错的
时间: 2024-03-26 09:35:02 浏览: 20
语句"double *p=&x, x;"是错误的,因为在这个语句中,p被声明为指向double类型的指针变量,而x只是一个普通的double类型变量。因此,应该先声明x作为一个double类型的变量,然后再将p指向它。正确的语句应该是:
```double x;
double *p = &x;```
这样,p就指向了x的内存地址。
相关问题
指针的使用(3) 有如下变量定义: double a; double *p, *q; 假设 p 指向 a,则使 q 指向 a 的正确语句是 ▁▁▁▁▁ 。 A. *&q = &a; B. *q = *p; C. &q = &p; D. q = &*p;
正确答案是 D. q = &*p;
解析:
&p 是指向指针 p 的指针,类型为 double **,与 q 的类型 double * 不匹配。
*q = *p 将 p 指向的值赋给 q,但是 p 指向的是变量 a,而 q 并没有指向任何变量。
*&q = &a 将变量 a 的地址赋值给指向指针 q 的指针,但是 *&q 等价于 q,左右两边类型不匹配。
q = &*p 将 p 指向的变量 a 的地址赋给指针 q,此时 q 和 p 指向同一个变量 a,且类型匹配。
若有double *p,x[10];int i=5;使指针变量p指向元素x[5]的语句为()。 A. p=x; B. p=x[i]; C. p=&(x+i) D. p=&x[i];
选项 A. p=x; 是使指针变量 p 指向元素 x[5] 的语句。
可以使用数组名来获取数组的第一个元素的地址,然后通过指针的加法运算来访问其他元素。在这个问题中,可以使用 x 数组名来获取数组的第一个元素的地址,然后通过指针加上偏移量 5 来访问第 6 个元素 x[5] 的地址。因此,可以使用指针变量 p 来存储 x[5] 的地址,即 p=&x[5];。而由于数组名 x 本身就是一个指向数组第一个元素的指针,所以也可以使用 p=x; 来使指针变量 p 指向元素 x[5]。