|
以文本方式查看主题 - 计算机科学论坛 (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) |
|
-- 作者:卷积内核 -- 发布时间: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]; 改为 |
|
-- 作者: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 |