📜  门| GATE-CS-2016(Set 2)|问题22

📅  最后修改于: 2021-06-29 03:48:01             🧑  作者: Mango

以下程序打印的值是

void f(int* p, int m)
{
    m = m + 5;
    *p = *p + m;
    return;
}
void main()
{
    int i=5, j=10;
    f(&i, j);
    printf("%d", i+j);
}

(A) 10
(B) 20
(C) 30
(D) 40答案: (C)
解释:

#include"stdio.h"

void f(int* p, int m)
{
    m = m + 5;
    *p = *p + m;
    return;
}
int main()
{
    int i=5, j=10;
    f(&i, j);
    printf("%d", i+j);
}

对于我来说,地址已通过。对于j,传递值。因此,在函数f中,p将包含i的地址,而m将包含值10。f()的stst语句会将m更改为15。然后将15添加到地址p的值。它将使i = 5 + 15 =20。j将保持为10。print语句将打印20 + 10 =30。因此答案为C。
这个问题的测验