关于函数传递野指针的问题

陈思有 2011-12-08 03:21:41
#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;//返回的是指向最后的那个节点
}
...全文
125 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
用指针的指针,或者引用
  • 打赏
  • 举报
回复
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 )

这句太强大
陈思有 2011-12-08
  • 打赏
  • 举报
回复
如果将head作为参数传递之前没有为它分配内存,肯定会出现warning
但是为什么执行的时候会出现内存之类的问题
上面的程序是我改过了的,没有改之前head指向的内存是Create函数分配的
陈思有 2011-12-08
  • 打赏
  • 举报
回复
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);



?????????
猪头小哥 2011-12-08
  • 打赏
  • 举报
回复
VS2010上面运行的结果为:
7 1 12 2 8 3 11 4 9 5 13 6 10
好像没有楼主要说的问题,不知道你要什么效果?
xhz2000 2011-12-08
  • 打赏
  • 举报
回复
不解! 没有这样使用过。
zscedu 2011-12-08
  • 打赏
  • 举报
回复
老大,你要干嘛?这个程序不存在你说的问题吧?
zhaghi 2011-12-08
  • 打赏
  • 举报
回复
哪有给一个形参分配内存的,寒

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧