结构体指针做函数参数
问题:在程序中我把结构体指针作为实参传递给函数,在函数里面对结构体成员进行赋值,退出函数之前可以打印结构体成员的值,退出函数后打印出结构体成员的值,发现结构体成员为空。
部分代码如下:
结构体的定义:
struct _pos_patrn{
char file[100];
char patrn[100];
int pos;
struct pos_patrn *next;
};
typedef struct _pos_patrn * POS_PATRN;
操作结构体的函数如下:
void addPos(char *ftype,char *patrn,int pos,POS_PATRN pospatrn)
{
POS_PATRN ppos=(POS_PATRN)malloc(sizeof(struct _pos_patrn));
assert(ppos);
memcpy(ppos->file,ftype,strlen(ftype));
memcpy(ppos->patrn,patrn,strlen(patrn));
ppos->pos=pos;
ppos->next=pospatrn;
pospatrn=ppos;
printf("the patrn is:%s,the file is:%d\n",pospatrn->patrn,pospatrn->pos);
}
主函数中对pospatrn分配了内存:
POS_PATRN pospatrn=(POS_PATRN) malloc(sizeof(struct _pos_patrn));
主函数中有两行代码如下
addPos(ftype,patrn,pos,pospatrn);
printf("pattern:%s is in the position:%d\n",pospatrn->patrn,pospatrn->pos);
但输出的结果却不同(一个在addpos中输出)
the patrn is:504B0304,the pos is:0
pattern: is in the position:0