关于函数传递野指针的问题
- C/C++ code
#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;//返回的是指向最后的那个节点}
[解决办法]
哪有给一个形参分配内存的,寒
[解决办法]
老大,你要干嘛?这个程序不存在你说的问题吧?
[解决办法]
不解! 没有这样使用过。
[解决办法]
VS2010上面运行的结果为:
7 1 12 2 8 3 11 4 9 5 13 6 10
好像没有楼主要说的问题,不知道你要什么效果?