已关闭,此问题需要更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结构和所有的东西,所以我不想在库中做,而是在我的外部代码中。
2条答案
按热度按时间s71maibg1#
这条线
等于
即指向人的指针和人的示例
41zrol4v2#
person显然是结构体定义,*personPtr将创建一个指向结构体数据的指针,我认为person1是实际数据(分配的内存空间)?
是谁告诉你的
逗号分隔定义,两者彼此无关。两者都未初始化。
您需要使用对struct的引用初始化指针。