今天在写lua脚本的申请函数时出现了一个低级错误, 在一个函数中申请new,但是传递进去的是一个指针,如下init1 函数 这样写其实是错误的 正确地写法应该是init
或者可以修改init1返回申请的值。
我一直以为我这样是传的指针,但是其实我这样的写法是传的值。
#include <iostream>
using namespace std;
struct node
{
int a;
int b;
};
void init(struct node **pnode)
{
*pnode = new node;
(*pnode)->a = 11;
(*pnode)->b = 12;
}
void init1(struct node *pnode)
{
pnode = new node;
pnode->a = 11;
pnode->b = 12;
}
int main(int argc, char * argv[])
{
struct node *pnode=NULL;
init(&pnode); //正确
init1(pnode);//错误
cout << pnode->a << endl;
cout << pnode->b << endl;
}