gpt4 book ai didi

c - 弄清楚什么是正确的解决方案。指针

转载 作者:行者123 更新时间:2023-11-30 21:01:54 25 4
gpt4 key购买 nike

使用procd3*p1的可访问值是多少?

void procd3(int *pt1, int *pt2){
int *pt3;
pt3 = pt1;
pt1 = pt2;
*pt1= *pt3 + 1;
}

void main(){
int va;
int *p1, *p2;

p1=(int *)malloc(sizeof(int));
p2=(int *)malloc(sizeof(int));
*p1=3;

*p2= *p1 + 2;

procd3(p1,p2);

}

我认为答案是 4。因为*p1=3在开头,*p2=*p1+2=5。因此,当函数被调用时 pt3=3,然后是 pt1=5,最后是 *pt1=3+1=4

最佳答案

为了便于说明,我们假设 malloc 对于 p1 返回 0x10000x1004 >p2。因此,当您调用 procd3 时,pt1 最初为 0x1000pt2 最初为 0x1004 .

首先发生的是将 pt1 的值分配给 pt3,然后将 pt2 的值分配给 pt1,给我们以下内容:

pt3 == 0x1000 == p1
pt1 == 0x1004 == p2

*pt3 == *p1 == 3

现在,你做作业

*pt1 = *pt3 + 1;

但请记住,pt1 指向与 p2 相同的位置 - 0x1004p1 指向的内存不受影响。所以在函数调用之后,*p1仍然是3

关于c - 弄清楚什么是正确的解决方案。指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34029803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com