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

📅  最后修改于: 2021-09-26 03:54:35             🧑  作者: 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);
}

(一) 10
(乙) 20
(C) 30
() 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);
}

对于 i,地址被传递。对于 j,传递值。所以在函数f 中,p 将包含 i 的地址,m 将包含值 10。f() 的 Ist 语句会将 m 更改为 15。然后将 15 添加到地址 p 处的值。它将使 i = 5+15 = 20。j 将保持为 10。print 语句将打印 20+10 = 30。所以答案是 C。
这个问题的测验