zoukankan      html  css  js  c++  java
  • 20180601

    有以下程序

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    #include <stdlib.h>
    void fun ( double *pl,double *p2,double *s)
    {
        s = ( double*) calloc ( 1,sizeof(double));
        *s = *pl + *(p2+1);
    main( )
    {
        double a [2] = {1.1,2.2},b [2] = {10.0,20.0}, *s = a;
        fun (a,b,s);
        printf ( "%5.2f ",* s) ;

    程序的输出结果是?

    21.10
    11.10
    12.10
    1.10

    正确答案: D   你的答案: A (错误)

    编译器编译时给指针参数提供临时副本 _p,使得_p=p。如果函数体内的程序修改了_p指向的内容,就导致参数p指向的内容也被做了相应的修改,因为他们指向同一内存空间。在本例中,_p 申请了新的内存,只是把_p 所指的内存地址改变了,但是p 丝毫未变(即修改了p本身的值而不是_p指向的对象)

    本题考查把数组名作为函数参数,执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1.10,选项D正确。

  • 相关阅读:
    算法作业实验三
    牛客练习赛53 B 美味果冻
    牛客练习赛53 C 富豪凯匹配串
    bitmat
    牛客挑战赛33 B 鸽天的放鸽序列
    树状数组
    线段树
    2019牛客国庆集训派对day7 A 2016
    背包
    作业三 -并查集
  • 原文地址:https://www.cnblogs.com/kxzh/p/9150981.html
Copyright © 2011-2022 走看看