阅读:1510回复:4
大家来看看这个简单的C的程序,数组个指针的
#include <stdio.h>
#define t 5 #define f int f MIN( f a ,f b) //最小值的函数,没问题 {f c; if(a<=b) c=a; else c=b; return (c); } f *JIAO(f *a,f *b) //两个数组,比较每个元素的大小,取小的 { f *pr,c[t]; int i; int j; for(i=0;i<t;i++) { c=MIN(*(a+i),*(b+i)); } for (j=0;j<t;j++) printf("%dn",c); //这个是输出1 pr=c; return(pr); } void main() { f a[t]={4,3,7,5,2}; f b[t]={3,6,6,4,8}; f c[t]; f *p; int i; p=JIAO(a,b); //为什么这里可以调用数组的直接写名称??? for(i=0;i<t;i++) { c=*(p+i); printf("c[%d]的值为%dn",i,c); //输出2 p=JIAO(a,b); //这个为什么必须要,如果没有的话,就第一个是对的。我这里的P没有变化啊,为什么要重新赋一次值??? } } 输出一和输出二为什么不同??? -858993460 -858993460 -858993460 -858993460 -858993460 c[0]的值为3 -858993460 -858993460 -858993460 -858993460 -858993460 c[1]的值为3 -858993460 -858993460 -858993460 -858993460 -858993460 c[2]的值为6 -858993460 -858993460 -858993460 -858993460 -858993460 c[3]的值为4 -858993460 -858993460 -858993460 -858993460 -858993460 c[4]的值为2 -858993460 -858993460 -858993460 -858993460 -858993460 Press any key to continue [编辑 - 11/9/04 by sagifish] |
|
|
沙发#
发布于:2004-11-09 18:08
程序有两处明显错误
f *pr,c[t]; c=MIN(*(a+i),*(b+i)); 将一个值赋给数租名? c=*(p+i);同样问题, 不知道你要实现什么 |
|
|
板凳#
发布于:2004-11-10 12:10
那两个地方确实有问题
|
|
|
地板#
发布于:2004-11-10 19:26
for(i=0;i<t;i++)
{ c=MIN(a,b); } [编辑 - 11/10/04 by wowocock] |
|
|
地下室#
发布于:2004-11-10 19:30
靠,什么垃圾,I都显示不出来
|
|
|