注意事项:
修改一个空间的指向需要传递该空间的地址指针
结构体指针在没有分配空间前可以 . ->出成员,但没有实际意义
需要对一个结构体求大小时,malloc中传结构体大小,并不是结构体指针的大小,虽然它返回的是指针类型
/*
node* ptr = NULL;//定义一个node*类型的指针,但没有分配空间
ptr = new node;//给ptr分配空间,只有分配空间后才能使用
ptr->data = 1;
*/
main.cpp
#include"test.h"
void list::creat(node** _node, int* array, int& index, int size){
if (index > size)
{
return;
}
node* tmp = new node;
*_node = tmp;
(*_node)->data = array[index];
index++;
creat(&(*_node)->next, array, index, size);
/*
node* ptr = NULL;//定义一个node*类型的指针,但没有分配空间
ptr = new node;//给ptr分配空间,只有分配空间后才能使用
ptr->data = 1;
*/
return;
}
test.cpp
#include"test.h"
void list::creat(node** _node, int* array, int& index, int size){
if (index > size)
{
return;
}
node* tmp = new node;
*_node = tmp;
(*_node)->data = array[index];
index++;
creat(&(*_node)->next, array, index, size);
/*
node* ptr = NULL;//定义一个node*类型的指针,但没有分配空间
ptr = new node;//给ptr分配空间,只有分配空间后才能使用
ptr->data = 1;
*/
return;
}
test.h
#include<iostream>
using namespace std;
typedef struct node {
node()
:next(NULL)
,data(0)
{}
node* next;
int data;
}node;
class list {
public:
list()
:_head(NULL)
{}
void creat(node** node,int*array,int& index,int size);
public:
node* _head;
};