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

4

2 回答 2

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 */
于 2013-06-28T20:22:29.977 回答
1

问题是你声明cnt为一个int指针,所以当你传入 时&cnt,你传入的是一个指向int. 尝试将 main 的第二行int cnt=0;更改为并将 for 循环更改为for(i=0;i<cnt;i++)(注意字符的删除*)。

编辑:该行*cnt++;应更改为++*cnt;or (*cnt)++,因为增量运算符的优先级高于取消引用运算符。

于 2013-06-28T20:23:18.333 回答