用指针做形参,哪位高手做下,
我搞了一下午,.......
学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
1。cll函数返回值问题
返回的b[8]是数组中的一个元素,但你定义的数组最后一个元素应该是b[7],所以返回的是内存中紧挨着b[7]的下一个单元中的数,应该是一个未知的数。
2。通过你的cll函数没有给b这个数组赋任何的值.
3。主函数中b[8]=cll(a);这句话并不是给b这个数组赋值,而是给b数组中的第九个元素赋值
4。for(j=0;j<8;j++)
printf("%d\n",b[j]); 输出的是b这个数组从0到7的元素,但跟本没有赋值,所以打印出来的应该是未知的数。
根据你的本意,我觉得这个程序应改为:
#include <stdio.h>
void cll(int *a,int *b)
{
int j;
for(j=1;j<8;j++)
{
if(a[j-1]==a[j])
{
b[j]=1;
}
else
{
b[j]=0;
}
}
if(a[0]==a[7])
{
b[0]=1;
}
else
{
b[0]=0;
}
}
main()
{
int j,b[8],a[]={0,1,0,1,0,1,0,1};
cll(a,b);
for(j=0;j<8;j++)
{
printf("%d\n",b[j]);
}
getch();
}
int b[8];
int *p2=b;
int j;
int cll(int *p)
{int *p1;
p1=p;
for(j=0;p<p1+7;p++,j++)
{if(*p==*(p+1))
b[j]=1;
else
b[j]=0;
}
if(*p1==*(p+1))
b[7]=1;
else b[7]=0;
}
main()
{int a[8]={0,1,0,1,0,1,0,1};
cll(a);
for(;p2<p2+8;p2++)
printf("%d ",*p2);
}
这又哪里错呢??
[此贴子已经被作者于2005-12-10 19:47:53编辑过]