int a[10]={0,1,2,3,4,5,6,7,8,9}; int *p=&a[2]; 则p[3]等于?
时间: 2024-04-07 13:24:29 浏览: 52
根据题目,已知int a[]={1,2,3,4,5};int*p[]={a,a+1,a+2,a+3};int **q=p;表达式*(p+1)+**(q+2)的值是5。另外,引用提供的信息与此问题无关,不需要参考。
根据题目,int a[10]={0,1,2,3,4,5,6,7,8,9}; int *p=&a; 则p等于5。解释如下:
- p指向a,即3。
- p表示p指向的地址往后偏移3个int类型的长度,即p+3,对应的值为a,即5。
相关问题
1 class A 2 { 3 final int f=10; 4 double d; 5 abstract void method(); 6 }
这段代码定义了一个抽象类A,包含一个final修饰的int类型变量f、一个double类型变量d和一个抽象方法method()。final修饰的变量f表示该变量的值不能被修改,因此在类A中定义时必须进行初始化。
需要注意的是,抽象类中的抽象方法没有具体的实现,因此不能直接创建抽象类的实例。如果要使用抽象类中的方法,必须通过继承该抽象类并实现其中的抽象方法来创建一个子类。例如:
```
abstract class A {
final int f = 10;
double d;
abstract void method();
}
class B extends A {
void method() {
System.out.println("This is a method in B");
}
}
public class E {
public static void main(String args[]) {
A a = new B();
a.method(); // 输出"This is a method in B"
}
}
```
在这个例子中,B类继承了A类,并实现了其中的抽象方法method()。在主函数中,创建了一个B类的实例并将其向上转型为A类型,通过A类型的变量来调用method()方法,输出了一段信息。
int a[ ]={1,3,5,7,9}; int x=0,y=1, *ptr; ptr=&a[1]; while(!x) { y+=*(ptr+x); x++; }为什么y输出是4
因为在 while 循环中,指针 ptr 指向了数组 a 的第二个元素,即 a[1],并且在每次循环中,y 的值都会增加 ptr+x 所指向的数组元素的值。因此,在第一次循环中,x 的值为 1,ptr+x 所指向的数组元素为 a[2],其值为 5,因此 y 的值为 1 + 5 = 6。在第二次循环中,x 的值为 2,ptr+x 所指向的数组元素为 a[3],其值为 7,因此 y 的值为 6 + 7 = 13。在第三次循环中,x 的值为 3,ptr+x 所指向的数组元素为 a[4],其值为 9,因此 y 的值为 13 + 9 = 22。在第四次循环中,x 的值为 4,循环条件 !x 的值为 0,循环结束,最终 y 的值为 22,而不是 4。因此,该程序存在错误,y 不应该输出 4。