首页 > 试题广场 >

下列程序的输出结果是()。 void f(int

[单选题]
下列程序的输出结果是()

#include <stdio.h>
void f(int *p) { *p = 5; }

int main(void) {
    int a, *p;
    a = 10;
    p = &a;
    f(p);
    printf("%d", (*p)++);
    return 0;
}


  • 5
  • 6
  • 10
  • 11
1、(*p)++先输出,再自增
2、指针传值拷贝调用,被调用函数内部得到的是指针的拷贝,但是指针拷贝里面存的东西(也就是指向的对象的地址)是不变的。通过改地址仍可以实现对指向对象的操作。
发表于 2018-07-23 13:05:31 回复(3)
p指向a的地址。
在函数中*p = 5;将p指向的地址重新复制为5
输出语句中 (*p)++,先输出,后自加。
故结果为5
发表于 2018-05-19 15:48:27 回复(0)
指针作为参数传递,为值传递
被调用函数内部得到指针的拷贝,但两个指针指向相同的内存地址
通过两个指针都可以改变指向地址存放的数据
发表于 2018-11-20 08:23:24 回复(0)
1、(*p)++先输出,再自增
2、指针传值拷贝调用,被调用函数内部得到的是指针的拷贝,但是指针拷贝里面存的东西(也就是指向的对象的地址)是不变的。通过改地址仍可以实现对指向对象的操作。
发表于 2021-10-18 19:35:54 回复(0)
定义 a,计算机开辟一个空间且赋予一个地址给a,将a的地址赋给p,作为传参,*p=5是将a的开辟空间中的值10修改成5,然后先输出再自增。
发表于 2023-08-21 20:23:31 回复(0)
这题为什么不是10, 如果func改成 a=10 p=&a 那确实是10 但是我们改变的是p地址的内容,跟传递的形参p本身没有关系。
发表于 2022-02-18 10:46:09 回复(1)
<p>先输出了</p><p><br></p>
发表于 2020-07-15 08:12:38 回复(0)
i++和++i都是加一操作,不同的是i++先取i进行操作再加一,例子:i=0;printf("i++");取i=0,再加一,即打印0,然后再加一,i=1 而++i与之相反,先加一再操作
发表于 2019-07-02 23:23:49 回复(0)
函数f修改p指向的值为5,先输出再自增
发表于 2019-04-27 22:06:16 回复(0)
先输出,后自增:输出后为6
发表于 2018-07-30 16:00:22 回复(0)