C语言编程经典案例(指针系列二)——数组指针

今天给大家带来指针问题的另一个案例。题目是:将一个已知数组中最大的数与第一个元素交换,最小的与最后一个元素交换,并输出数组。

关于数组指针,我们需要了解的是,a[3]={1,2,3};该数组的首地址就是a。定义一个指针int *p;通过p=a就可以将p指向数组首地址了。同时,元素a[0]的地址恰好与数组地址重合,即&a[0]与a正好是同一数值。有疑问的朋友可以通过小程序测试下。下面贴上程序代码,纯手动打造,请各位朋友指教。

main()

{

int *max,*min,max_i,min_i;

int a[8]={34,12,56,34,66,23,99,87};

int i,temp;

max=min=a;//最大值最小值指针初始化为a[0]

max_i=min_i=0;//最大值最小值下标初始化为0

printf("修改前的数组是\n");

for(i=0;i<8;i++)

{

printf("%d ",a[i]);

}

printf("\n");

for(i=0;i<8;i++)

{

if(a[i]>*max)

max=&a[i];//寻找最大值

if(a[i]<*min)

min=&a[i];//寻找最小值

}

printf("%d %d",*max,*min);

temp=a[0];

a[0]=*max;

*max=temp;

temp=a[7];

a[7]=*min;

*min=temp;

printf("修改后的数组是\n");

for(i=0;i<8;i++)

{

printf("%d ",a[i]);

}

printf("\n");

}

运行后的结果如下

今天的编程演练就到这里,有什么问题请评论区评论给我,小编会及时回复哦,谢谢亲的支持!

原文链接:,转发请注明来源!