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

ylwork 2012-07-07 06:32:18

#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); /*我对指针的用法不是很了解,请热心人指点一下*/


/*到底犯了哪些毛病*/
}
...全文
101 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
flowingfirefly 2012-07-08
  • 打赏
  • 举报
回复
当求完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还是应该把重点放在算法而不是语法上。
AnYidan 2012-07-08
  • 打赏
  • 举报
回复
*ptr = ????

修改了指针指向空间的数值
ylwork 2012-07-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

当求完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],……
[/Quote]

你说的我受益匪浅,但是对于我这种初学者最大的困难就是语法结构比较难于掌握,所以连一些最基本的程序都很难书写完整,所以我也很头疼,不知道以后会不会好一点,我也真的很不懂怎么学习,谢谢你的指点
a7411053 2012-07-07
  • 打赏
  • 举报
回复
*max=*(max+1);
*min=*(min+1);
这两句的问题,比较完大小之后你这样写就直接改变数组中原本的数值了,这样做的结果就是你的数组中很多值会被赋值成重复的数字。
可以改成下面的试试:
max=(max+1);
min=(min+1);
阿佳夕 2012-07-07
  • 打赏
  • 举报
回复
#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); /*这里你通过两个数比较得到了大的一个为*min,然后min++,*min又被你重新赋值了。所以得出的答案都是指向数组的最后一个数。如果你把数组的1和10的位置对换,得到答案为1*/
printf("%d\n",*min); /*我对指针的用法不是很了解,请热心人指点一下*/


/*到底犯了哪些毛病*/
}
W170532934 2012-07-07
  • 打赏
  • 举报
回复
显然,你的程序有问题。 修改了原本的数据。用指针来指示,但建议不要用解引用直接修改值。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧