关于函数传递野指针的问题
#include <stdio.h>#include <stdlib.h>#define LEN 13 //数组长度typedef struct date{ int num; struct date *next;}DATE;DATE *Create(DATE *head);void Game( int* a );void main(){ int a[LEN],i; Game(a); for ( i=0; i<LEN; i++) { printf("%d ",a[i]); } printf("\n");}void Game( int* a ){ DATE *head,*tail,*p1,*p2; int i=1; head = (DATE*)malloc(sizeof(DATE)); //我如果这里没有对head分配内存,就用函数传递指针的话执行时出现内存问题 if ( head == NULL ) { printf("分配内存失败\n"); exit(1); } tail = Create(head); p1 = head; while ( p1->next != NULL ) { p2 = p1->next; a[p2->num] = i++; tail->next = p1; tail = p1; tail->next = NULL; p1 = p2->next; free(p2); } a[p1->num] = i; free(p1);}DATE *Create(DATE *head){ DATE *p1,*p2; int i=0; //在这里给head分配内存不行 p1 = head; while ( i < LEN ) { p1->num = i++; p2 = p1; p1 = (DATE*)malloc(sizeof(DATE)); if( p1 == NULL ) { printf("分配内存失败\n"); exit(1); } p2->next = p1; } free(p1); //最后分配的一个节点实际上没有用到; p2->next = NULL; return p2;//返回的是指向最后的那个节点}