题目有问题,p的值是多少?式子*p=a+4;若没有对p赋值,直接用*p是错误的,若题目是 int a[10]={1,2,3,4,5,6,7,8,9,10}, p=a+4;则 (++p)=6 分析:p=a+4,即相当于p=&a[4]++p 则p=&a[5],所以*(++p)=*(&a[5])=a[5]=6 ...
因为数组的下标是从0开始的,也就是说a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[5]=6,a[6]=7,a[7]=8,a[8]=9,a[9]=10。所以B不对;p 和 a 都是指向数组a说地址的指针,它们指向的都是a[0];a[p-a],因为p=a=a数组的首地址,所以 p-a =0,a[p-a]= a[0]。不...
include<iostream.h> void change(int *n, int len){ int a, *p= &a;for(int i= 0; i < len/2; i++){ p= *(n+i);(n+i)= *(n+len-1-i);(n+len-1-i)= *p;} } void main(){ int a[10]={1,2,3,4,5,6,7,8,9,10};change(a, 10);for(int i= 0; i...
程序基本正确,就有一个小小的问题,输出数组时要加入空格(细节决定成败哦)include <stdio.h>int main (){int a[10]={1,2,3,4,5,6,7,8,9,10};int m,i,k,j,n;scanf("%d",&m);int *p=a;for(i=0;i<m;i++){k=*(p+9);for(j=9;j>0;j--){*(p+j)=*(p+j-1);...
int *p=&a[3];则p = a+3 b = p[5] = *(p+5) = *(a+8) = 9
(p+2)就是先把P指向的地址后移两个单位,P初始化指向a数组首地址,后移两个单位后即 a[2]= 3 ;答案
p[5]的值就是*(a+3+5)的值,也就是a[8]的值,即9。选答案D。
定义数组并赋值时C语言规定下标是这样的,a[n]中的n个元素应该是a[0]...a[n-1],由此可见答案B中a[10]已经超过规定的范围,故不能表示数组a中的元素。答案A中因为指针P指向数组首地址,所以*p相当于a[0]这个元素 B不
编译时 A &(a+1) 有问题, & 其实 是取地址操作 6 30 C:\Untitled1.c [Error] lvalue required as unary '&' operand B.a++ 也有问题 7 28 C:\Untitled1.c [Error] lvalue required as increment operand C.&p 这个是表示 指针变量 p 的地址 此题正确答案 是...