若有int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[0];int *q=&a[6];则q-p=( )。
时间: 2024-04-03 07:31:10 浏览: 18
根据题目中的定义 `int a[10]={1,2,3,4,5,6,7,8,9,10};`,可以得知:
- 数组 a 共有 10 个元素,分别为 1、2、3、4、5、6、7、8、9、10。
- &a[0] 表示数组 a 的首地址,即 a 数组的第一个元素的地址。
- &a[6] 表示数组 a 中下标为 6 的元素的地址,即 a 数组的第七个元素的地址。
因此,指针变量 p 指向 a 数组的第一个元素,即 p=&a[0];指针变量 q 指向 a 数组的第七个元素,即 q=&a[6]。
指针相减的结果是两个指针之间的元素个数,即 q-p 表示 q 指向的元素和 p 指向的元素之间相隔的元素个数。
因为指针 p 指向 a 数组的第一个元素,而指针 q 指向 a 数组的第七个元素,因此它们之间相隔的元素个数为 6。
因此,q-p 的值为:`6`。
相关问题
int a[10]={1,2,3,4,5,6,7,8,9,10};char c ='a',e
同样地,这段代码也有问题。变量名 c 和 e 没有类型声明,而且这两个变量和数组 a 没有任何关系。如果你想要正确地声明一个 int 类型的数组 a 并初始化为 {1,2,3,4,5,6,7,8,9,10},同时声明一个 char 类型的变量 c 并赋值为 'a',还声明了一个 char 类型的变量 e,正确的做法应该是:
```
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
char c = 'a';
char e;
```
这样就声明了一个 int 类型的数组 a,一个 char 类型的变量 c 并赋值为 'a',还声明了一个 char 类型的变量 e。
若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句为。
可以使用指针运算和条件语句来判断并输出不为5的元素。可以使用如下代码:
```c++
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
for(int i=0;i<10;i++){
if(*p!=5){
cout<<*p<<" ";
}
p++;
}
```
输出结果为:
```
0 1 2 3 4 6 7 8 9
```
其中,`*p`表示指针所指向的值,`p++`表示指针向后移动一位,遍历整个数组。当指针所指向的值不为5时,输出该值。