你能解释一下下面的“C”typedef结构代码是什么,如何以及为什么吗?

mwngjboj  于 2023-04-05  发布在  其他
关注(0)|答案(2)|浏览(108)

已关闭,此问题需要更focused,目前不接受回答。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

6天前关闭。
Improve this question
下面是一些typedef结构的示例

typedef struct _person {
   int age;
   float weight;
   int test;
} person;

int main()
{
    person *personPtr, person1;
    personPtr = &person1;   
    person *personPtr2, person2;
    personPtr2 = personPtr;   

    person1.test = 5;
    personPtr->age = 72;
    personPtr2->weight = 150;

所有3,person 1 personPtr 1和personPtr 2都指向相同的数据,我不明白的行是:

person *personPtr, person1;
    personPtr = &person1;

person显然是结构体定义,*personPtr将创建一个指向结构体数据的指针,我认为person 1是实际数据(分配的内存空间)?
那为什么下一行

personPtr = &person1;

上一行不是已经创建了personPtr作为person 1的指针吗?我不明白是否需要以及为什么需要这两行代码?
我想做的是创建一个指向person 1数据的单独指针。
我不知道该怎么做,所以我用

person *personPtr2 person2

则i可以使2个指针personPtr 2 = personPtr相等;
但是,这是浪费内存,因为它正在创建我不需要的第二个person 2数据。
我所要做的就是创建第二个ptr(句柄)到原始的结构数据(person 1)。
那么这是怎么做到的呢?顺便说一下,这是一个库的接口,它有typedef结构和所有的东西,所以我不想在库中做,而是在我的外部代码中。

s71maibg

s71maibg1#

这条线

person *personPtr, person1;

等于

person *personPtr;
 person person1;

即指向人的指针和人的示例

41zrol4v

41zrol4v2#

person显然是结构体定义,*personPtr将创建一个指向结构体数据的指针,我认为person1是实际数据(分配的内存空间)?
是谁告诉你的
逗号分隔定义,两者彼此无关。两者都未初始化。
您需要使用对struct的引用初始化指针。

相关问题