当前位置: 首页 > 工具软件 > log-malloc2 > 使用案例 >

C语言 malloc() + 结构体指针定义结构体变量

姚胡媚
2023-12-01

        之前在学习链表的过程中,笔者认为新节点必须如下定义:

struct Node *p;
struct Node {
	int val;
	p pNext;
};

int main()
{
	Node Node1;
	Node Node2;
	Node Node3;
	……
}

        看了老师的例程,发现老师定义了结构体数据类型之后,在main()函数中没有定义过结构体变量,而是使用结构体指针来定义链表的新节点。

        随后笔者做了如下测试:

#include <stdio.h>

typedef struct num {
	int age;
	int sid;
} num1;

struct num *p;

int main() {
	p = (struct num *)malloc(sizeof(num1));

	p->age = 10;
	p->sid = 20;

	printf("%d   %d\n", p->age, p->sid);
	return 0;
}

        发现一开始定义了【结构体类型】以及【结构体类型指针】后,在main()中仅需要使用malloc()为结构体指针开辟空间,即可创建结构体变量,并且可以用结构体指针来对结构体成员进行操作。

        某种程度来说,可以使用【结构体类型指针】+【malloc()】来创建新的结构体变量。

        另外,以下使用typedef 代码中,其实进行了两个操作:

typedef struct num {
	int age;
	int sid;
} num1;

        1.定义了一个结构体数据类型num
        2.用【num1】替换了struct num,在接下来的代码中可以使用num1 来定义结构体

 类似资料: