malloc函数
头文件:#include <malloc.h>
或 #include <alloc.h>
(注意:alloc.h 与 malloc.h 的内容是完全一致的。)
功能:分配长度为num_bytes字节的内存块
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
当内存不再使用时,应使用free()函数将内存块释放。
附上非常简单的链表代码
(因为不会写C++,所以基本是看一句写一句写出来的╮(╯▽╰)╭)
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
//定义链表中的节点
typedef struct node {
int member; //对象
struct node *pNext; //下一指针
}Node, *pNode;
//创建链表函数
pNode CreateList() {
int i; //用于循环
int len; //存放有效字节字数
int val; //临时存放用户输入数据
pNode pHead = (pNode)malloc(sizeof(Node)); //分配一个不存放数据的头结点
pNode pTail = pHead; //链表尾节点先设定为头结点
pTail->pNext = NULL; //将尾指针的pNext置为空
printf("请输入节点个数:");
scanf_s("%d", &len);
for (i = 0; i < len; i++) {
printf("请输入第%d个节点的数值:", i + 1);
scanf_s("%d", &val);
pNode pNew = (pNode)malloc(sizeof(Node)); //为节点分配空间
pNew->member = val; //将用户输入的数据赋给节点的成员
pTail->pNext = pNew; //将尾节点的指针指向新的节点
pNew->pNext = NULL; //将新节点指针置为空
pTail = pNew; //尾节点设置为新的节点
}
return pHead; //返回头节点
}
void TraverseList(pNode pHead) {
pNode p = pHead->pNext;
while (p != NULL) { //节点不为空的话继续循环
printf("%d ", p->member);
p = p->pNext;
}
printf("\n");
return;
}
int main(){
pNode pHead = NULL; //定义初始化头节点,等价于 struct Node pHead == NULL
pHead = CreateList(); //创建一个非循环单链表,并将该链表头节点地址赋给pHead
TraverseList(pHead); //调用遍历链表函数
return 0;
}