gpt4 book ai didi

c - 将结构体的地址分配给指针

转载 作者:行者123 更新时间:2023-11-30 15:20:09 25 4
gpt4 key购买 nike

考虑这段代码:

#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<string.h>

struct Person {
char *name;
int age;
int height;
int weight;
};
struct Person Person_create(char *name,int age,int height,int weight)
{
struct Person who;
who.name=strdup(name);
who.age=age;
who.height=height;
who.weight=weight;

return who;
}
void Person_destroy(struct Person who)
{
free(who.name);
}
void Person_print(struct Person who)
{
printf("%s %d %d %d %p \n",who.name,who.age,who.height,who.weight,&who);
}
int main(int argc,char *argv[])
{
struct Person p1=Person_create("shahrooz",26,180,100);
Person_print(p1);
Person_destroy(p1);
struct Person *p2=&p1;
printf("%p %p \n",&p1,&p2);
return 0;
}

我在指针(p2)中分配了p1的地址。但是在打印p1p2的地址时code> 为什么地址不一样?

printf("%p %p \n",&p1,&p2);

返回

0x7ffc1b96f980 0x7ffc1b96f978 

你能告诉我为什么吗?

最佳答案

在您的代码中进行更改

printf("%p %p \n",&p1,&p2);

printf("%p %p\n",&p1,p2);

因为,&p1指向结构体的指针p2也是(不是&p2)。

FWIW,&p2是一个指向结构体指针的指针。所以,

when printing the address of p1 and p2 why the address is not same?

因为,p1的地址与p2的地址不同。 p1 的地址是 p2

关于c - 将结构体的地址分配给指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30153928/

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