c中的打印数输出错误

时间:2013-06-28 20:19:48

标签: c printing compiler-errors

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它不起作用时

2 个答案:

答案 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)++,因为增量运算符的优先级高于解除引用运算符。