printf("%d\n",p);//输出的是第一个元素a[0]的地址,怎么可能是2呢?printf("%d\n",p+9);//输出的是第一个元素a[9]的地址,怎么可能是4呢?//元素地址由操作系统管理,这个值不确定。如果
include<stdio.h>void printfAB(int *a,int *b);//打印int main(){ int a[10]={1,3,5,7,9},b[10]={2,4,6,8,10},*pa,*pb,i=0; pa=&a[4]; pb=&b[4]; i=4; while(pa!=a)//a,b先移位让出要插入的空位 { *(pa+i)=*(pa); *(pb...
int a[]={1,2,3,4,5,6,7,8,9,0};int *p;for(p=a;p<a+10;p++){ printf("%d",*p);} 你这个i 很莫名其妙啊 上面的程序等同于下面这个程序 int a[]={1,2,3,4,5,6,7,8,9,0};int i;for(i=0;i<10;i++){ printf("%d",a[i]);} for (p=a ;p<a+10;p++)p...
q=*(p+5); /* 将p指针向后移动五个单位.这样p指向的是a[10],a[10]的值赋值给p指向的内存地 址,也就是赋值给a[5],这个命令和a[5]=a[10];这个时候,数组的成员的值已经发 生 了变化,分别是a[]={1,2,3,4,5,11,7,8,9,10,11,12,};*/ q--; /* q由原来...
include <stdio.h> int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10};int *p=a;int i,t;for (i=0;i<5;i++) {t=*(p+i); *(p+i)=*(p+9-i); *(p+9-i)=t;};for (i=0;i<10;i++) printf("%d ",a[i]);return 0;} ...
错误就这 *q = NULL,赋初值就在这里 而 *q= *(p + 5); 是 给内存(指针所指地方)存数据 无法往 NULL 存数据吧 因为
(p+2)就是先把P指向的地址后移两个单位,P初始化指向a数组首地址,后移两个单位后即 a[2]= 3 ;答案
int main(){ int a[10]={5,3,6,1,7,4,9,2,8,10};int i,max,*p;p=a;//将a数组的首地址赋给指针变量p max=*p;//将a数组的第一个元素a[0]赋给变量max p++;//将指针变量p指向a数组的下一个元素a for(i=1;i<10;i++){ if(*p>max){ max=*p;} printf("\nmax=%d\n"...
main( ){int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2;//*p=&a[3]把a中的3索引号地址给指针p,3索引号处为4,因为索引是从0算起//*q=p-2把p的地址减2个int位,即1处的索引号地址给指针q,1处的索引号处的值为2printf("%d\n",*p+*q);//*p+*q的值,...