|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
void main()
{
int a[10]={1,2,3,4,5,6,7,8,10,9};
void zh(int *a);
zh(a);
}
void zh(int *a)
{
int *max;
int *min;
max=min=a;
int i=0;
for(;i<10;i++)
{
if(*(a+i)>*max)
*max=*(a+i);
else if(*(a+i)<*min)
*min=*(a+i);
}
printf("%d %d",*min,*max);
}
为什么输出都是9 不是最大和最小
你一直修改的都是指针所指向的单元的内容,而指针的位置一直没有动过。也就是说max和min两个指针一直指向的都是a[0],而a[0]的值却一直被修改。程序运行完之后,数组a的内容是{9,2,3,4,5,6,7,8,10,9},指针max和min一直指向a[0],因此输出的都是9
- #include<stdio.h>
- void main()
- {
- int a[10]={1,2,3,4,5,6,7,8,10,9};
- void zh(int *a);
- zh(a);
- }
- void zh(int *a)
- {
-
- int *max;
- int *min;
- max=min=a;
- int i=0;
- for(;i<10;i++)
- {
- if(*(a+i)>*max)
- max=a+i;//这样才是移动指针
- else if(*(a+i)<*min)
- min=a+i;
- }
- printf("%d %d",*min,*max);
- }
复制代码
|
|