在c中通过引用传递int?

时间:2016-12-06 19:08:54

标签: c

void test(void *a)
{
    int *h = a;  //error
}
int main(int argc, char const* argv[]) 
{
    int z = 13;

    test(&z);

    return 0;
}

如果我想保留测试功能的void * a,我怎样才能让错误线工作?

1 个答案:

答案 0 :(得分:4)

我可以使用gcc编译并运行以下内容,而不会发出警告或错误:

#include <stdio.h>

void test(void *a)
{
        int *h = a;
        printf("test: %d\n", *h);
}

int main(int argc, char const* argv[])
{
        int z = 13;
        test(&z);
        return 0;
}

您指定的行上唯一可能的原因是您使用的是C ++编译器(g++可能?)。如果我尝试,我会收到以下错误:

error: invalid conversion from ‘void*’ to ‘int*’

如果您需要使用C ++编译器,则需要将a显式转换为int *

int *h = (int *) a;

这一个更改允许此代码也使用g++进行编译。