int funcc(int a[],int b[],int *cnt)
{
int *c;
int j,i,s=0;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if(b[i]==a[j])
{
*cnt++;
break;
}
c=(int*)malloc(*cnt*sizeof(int));
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if(b[i]==a[j])
{
c[s++]=b[i];
break;
}
return c;
}
void main (void)
{
int *c;
int *cnt=0;
int i,arr[n]={3,2,1},brr[n]={3,2,0};
c=funcc(arr,brr,&cnt);
for(i=0;i<*cnt;i++)
printf("%d ",c[i]);
}
我需要在2个数组中打印常用数字.. 但问题是“cnt”..如果我用3替换cnt它的工作原理.. 但是,当我把cnt它不起作用时
答案 0 :(得分:1)
你的原型是:
int funcc(int a[],int b[],int *cnt)
但是你传给指针一个指针:
int *cnt=0; /* <- pointer */
int i,arr[n]={3,2,1},brr[n]={3,2,0};
c=funcc(arr,brr,&cnt); /* &cnt <- pointer to a pointer */
答案 1 :(得分:1)
问题是您将cnt
声明为int
指针,因此当您传入&cnt
时,您传入指向int
指针的指针。尝试将第二行main更改为int cnt=0;
并将for循环更改为for(i=0;i<cnt;i++)
(请注意删除*
字符。)
编辑:行*cnt++;
应更改为++*cnt;
或(*cnt)++
,因为增量运算符的优先级高于解除引用运算符。