This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center
                            
                        
                    
                
                                6年前关闭。
            
                    
我无法理解以下问题的答案。
请帮我 :)

输出是什么:

struct INT
{
    int i;
};

typedef struct INT INT;

int Change(INT** INTptr)
{
    (*INTptr) = (INT*)malloc(sizeof(INT));
    (*INTptr)->i = 1000;
    return 500;
}

int main()
{
    INT dummy = {750};

    INT* ptr = &dummy;

    ptr->i = Change(&ptr);

    printf("dummy.i = %d, ptr->i = %d\n", dummy.i, ptr->i);

    return 0;
}


从我的一个朋友那里得到的。

我以为答案是:

dummy.i = 750,ptr-> i = 500

但是当我运行代码(GCC编译器)时,我得到:

dummy.i = 500,ptr-> i = 1000

可以用其他编译器作为答案吗?

而且,我仍然不明白为什么输出是500和1000 ...

提前致谢!

最佳答案

顺序点是这里的神奇词。和

ptr->i = Change(&ptr);


是位置。 (谁将更改ptr?是通过赋值还是通过函数(通过引用调用)进行更改)

关于c - 该代码的输出是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16917671/

10-11 18:31