程序基本正确,就有一个小小的问题,输出数组时要加入空格(细节决定成败哦)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);...
include<stdio.h> int main(){ int i,n,a[10]={1,2,3,4,5,6,7,8,9,10};scanf("%d",&n);for(i=0;i<10;i++)if(n==a[i])break;if(i==10)printf("-1");else printf("%d",i);return 0;} include<stdio.h> int main(){ int i,j,n,a[3][4]={{1,2,3,4}...
【答案】:D 解析:数组和指针的关系非常密切,因为数组名称单独使用是表示数组的首地址。故可用的表示可能是a[i],p[i],*(p+i),同样&(a[i])表示地址,因此*(&a[i])等同于a[i]。本题答案为D。
int a[][4]={1,2,3,4,5,6,7,8,9,10} 这么写的话,实际上a的构造是:int a[][4]={ {1,2,3,4},{5,6,7,8},{9,10,0,0},{0,0,0,0}};p=*(a+1);也就是p指向a第1行的行首元素,也就是*p=a[1][0]=5 所以9的表达式是,a第2行的行首元素,也就是a[2][0]...
答案是D p[ i ]是数组a[ ]的第i+1个元素,&p[ i ] 即取数组a[ ] 的第i + 1个元素的地址,故&p[ i ]表示数组元素地址。A 错,a+1本身就是数组第二个元素的地址,再取地址编译报错 B 错,a是数组名,存储在静态区,不能进行自增++运算,只有变量才可以++ C 错,p本身就是指向...
数组表示法: p[2]指针表示法: *(p+2)以上也可以用数组a替代,都是等价的
址,也就是赋值给a[5],这个命令和a[5]=a[10];这个时候,数组的成员的值已经发 生 了变化,分别是a[]={1,2,3,4,5,11,7,8,9,10,11,12,};*/ q--; /* q由原来指向a[5].变成了指向a[4]所以 *q==5;*p==11 int *p=a+5;//p指向6q=p; //q指向...
include<iostream> using namespace std;int main(){ int a[10]={1,2,3,4,5,6,7,8};//a[8],a[9]默认初始化为0 int *p;p=&a[5];//指针p现在指向数组a中的第六个即a[6];//p[-3]即表示指针p向前移动三个单位,也就是a[2],注意实际地址变量的值不变,p仍是只想a【5】c...
首先需要明白的是,自增自减的操作符比解引用操作符优先级高。对于A,相当于p = p + 2, *p, p++,返回的是第二步的*p,是正确答案。对于B,为p = p + 2, ++p, *p, 返回的是第三步的结果,是4 C肯定是错误的。D,为++(*p),返回的是2,*p代表的是a[0],这个表达式相当于++a[0...
a[i]=p[i]是数组的每个值内容。&a[i]=&p[i]是数组的每个单元地址。p是指针。a是数组也就类同于指针 p