以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  很奇怪的求最值程序  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=40845)


--  作者:fangel2000
--  发布时间:12/4/2006 4:34:00 PM

--  很奇怪的求最值程序
void max_min(int array[],int *p,int *q)
{
*p = array[0];
*q = array[0];
for(int i = 1;i < 10;i++)
{
  if(array[i] > *p)
   *p = array[i];          //为什么将这里改为p = &array[i]结果就运行正确????
  if(array[i] < *q)
   *q = array[i];         //同上
}
cout<<"max = "<<*p<<" min = "<<*q<<endl;
}

这是一个简单的求最值的问题,为什么源程序运行不正确,改为p = &array[i]结果就运行正确了?

*p = array[i]; 和 p = &array[i]难道不一样,在这里为什么要用p = &array[i]啊?


--  作者:longshentailang
--  发布时间:12/4/2006 10:12:00 PM

--  

变量的类型和要赋的值的类型要一致。C语言规定指针变量的定义形式为:数据类型名 *变量名。int *p=i;里面定义的p是指针类型,应该给它装地址,给它赋的值却是一个整型的i(如果你的i是整型指针的话,那么就没错了)。int p=&i;这句定义的p是一个整型变量,需要赋给它整数,但是给它赋的值是一个整型变量的地址,所以是不对的。

记住类型需要一致就行了。


--  作者:fangel2000
--  发布时间:12/4/2006 10:27:00 PM

--  
但是我这题的类型都是一致的啊. *p = array[i]; 和 p = &array[i] 都没错啊
因为p 的定义是 int *p 啊
那问题究竟出在什么地方呢?
--  作者:卷积内核
--  发布时间:12/5/2006 8:41:00 AM

--  
具体是什么错误?可以把完整的程序给出来吗?或者可以调试的程序。
--  作者:fangel2000
--  发布时间:12/5/2006 8:53:00 AM

--  
完整的程序如下:在VC6.0中编译通过,但是有逻辑错误
#include <iostream.h>

void max_min(int array[],int *p,int *q)
{
 *p = array[0];
 *q = array[0];
 for(int i = 1;i < 10;i++)
 {
  if(array[i] > *p)
    *p = array[i];
  if(array[i] < *q)
   *q = array[i];
 }
 cout<<"max = "<<*p<<" min = "<<*q<<endl;
}
void main()
{
 int array[10] = {1,8,10,4,56,0,7,15,4,9};
 int *p1 = array;
 int *q1 = array;
 max_min(array,p1,q1);
}
谢谢了


--  作者:卷积内核
--  发布时间:12/5/2006 9:42:00 AM

--  
因为你在两个指针初始化中指向的是同一个地址,所以同一个地址中的值是一样的,也就是*p1存放值的地方和*q存放值的地方是一样的。你把int *p1 = array;
int *q1 = array; 改为int *p1 = &array[0];
int *q1 = &array[1]; 就知道了。


--  作者:卷积内核
--  发布时间:12/5/2006 9:49:00 AM

--  
或者将

*p = array[0];
*q = array[0];

改为
p = &array[0];
q = &array[1];
也可以。


--  作者:fangel2000
--  发布时间:12/5/2006 12:07:00 PM

--  
哦,明白了,Thanks
--  作者:lidongbin
--  发布时间:12/15/2006 10:03:00 PM

--  
可能是指针变量的问题吧  不知道是不是 我自己的看法
我觉得可能是变量被编译器理解错误
--  作者:fangel2000
--  发布时间:12/16/2006 9:30:00 PM

--  
变量被编译器理解错误?什么意思?
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms