首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新人简单指针有关问题求热心人解释

2012-07-29 
新人求助简单指针问题求热心人解释C/C++ code#includestdio.hmain()/*问题是用指针方法求这个数组中的最

新人求助简单指针问题求热心人解释

C/C++ code
#include<stdio.h>main()              /*问题是用指针方法求这个数组中的最大和最小的元素*/{    int a[10]={1,2,3,4,5,6,7,8,9,10},*max,*min;    for(max=a;max<a+9;max++)       if(*max<*(max+1))      /*这句和if(a[n]<a[n+1]) 是不是等价的*/         *max=*(max+1);    printf("%d\n",*max);        for(min=a;min<a+9;min++)    /*如果定义*p;p=&a;可不可以认为*p和a的值是相等的*/        if(*min>*(min+1))         *min=*(min+1);    printf("%d\n",*min);   /*我对指针的用法不是很了解,请热心人指点一下*/                                                                /*到底犯了哪些毛病*/ }


[解决办法]
当求完max之后,数组a的内容就已经发生了改变,如果a={1,2,3}的话,那么当print(max)时, max指向的是a[2],a={2,3,3}, 那么下次, min = a之后, *min=2, *(min+1)=3, *min=*(min+1)不做,之后,min=a+1, 那么, *min=3, 因为*(min+1)=3, 所以*min>*(min+1)不成立,所以min指向a[1], *min=3, 所以最后输出:
3
3
a={1,2,3,...,10}也是一样的, 为了避免一些比较奇怪的问题,建议lz尽量不要*min=*(min+1),这样做会本地更改,导致问题复杂, lz还是应该把重点放在算法而不是语法上。

热点排行