这个c函数有什么问题?

时间:2015-01-03 19:59:31

标签: c function

如果原始值为-33,则用于给int变量赋值26;如果原始值为-19

,则用于给出值27
void func(int *a)
{

    if (a == -33)
        *a = 26;

    if (*a == -19)
        *a = 27;
}

2 个答案:

答案 0 :(得分:3)

让我们仔细看看第一个if语句:

if (a == -33)
    *a = 26;

问题a == -33。请注意,a的类型为int*。因此,您不会检查a是否具有值-33;您正在检查a指向的地址是否等于-33。解决它:

if (*a == -33)
    *a = 26;

您只需取消引用指针,将其实际值与-33进行比较。

答案 1 :(得分:-1)

我会编写像

这样的函数
void func( int *a )
{
    if ( *a == -33 )
        *a = 26;
    else if ( *a == -19 )
        *a = 27;
}

至于你的功能那么似乎有一个错字。而不是

if (a == -33)

必须有

if (*a == -33)