C语言单链表问题
#include<stdio.h>#include<stdlib.h>#defineOK1#defineNO0#defineERROR0typedefstructNode...
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define NO 0
#define ERROR 0
typedef struct Node
{
int data;
struct Node* next;
}Node;
typedef struct Node* LinkList;
void CreateListTail(LinkList *L,int n)
{
LinkList p,r;
int i;
srand(time(0));
*L = (LinkList)malloc(sizeof(Node));
r = (*L);
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(Node));
p->data=rand()%100+1;
r->next=p;
r=p;
}
r->next=NULL;
printf("%d\n",(*L)->data);//不一样
}
int main()
{
LinkList *L;
CreateListTail(&L,12);
printf("%d",(*L)->data);//不一样
return 0;
}
为什么函数里面和主函数里面输出的值不一样,他们地址所指向的data不是一样的吗?求解答 谢谢了 展开
#include <stdlib.h>
#define OK 1
#define NO 0
#define ERROR 0
typedef struct Node
{
int data;
struct Node* next;
}Node;
typedef struct Node* LinkList;
void CreateListTail(LinkList *L,int n)
{
LinkList p,r;
int i;
srand(time(0));
*L = (LinkList)malloc(sizeof(Node));
r = (*L);
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(Node));
p->data=rand()%100+1;
r->next=p;
r=p;
}
r->next=NULL;
printf("%d\n",(*L)->data);//不一样
}
int main()
{
LinkList *L;
CreateListTail(&L,12);
printf("%d",(*L)->data);//不一样
return 0;
}
为什么函数里面和主函数里面输出的值不一样,他们地址所指向的data不是一样的吗?求解答 谢谢了 展开
1个回答
展开全部
主函数中的
LinkList *L;
CreateListTail(&L,12);
两句有大问题!LinkList *L;是声明L为LinkList *型指针,它现在还没有指向目标,是悬浮指针。后面CreateListTail(&L,12);中的&L更有错误!你定义的CreateListTail函数的第一个形参是LinkList *型,而你用&L是传进了一个LinkList **型;这里单从匹配角度说应该写CreateListTail(L,12);才对。不过这里如前述L没有指向,会传过去一个垃圾地址……
LinkList *L;
CreateListTail(&L,12);
两句有大问题!LinkList *L;是声明L为LinkList *型指针,它现在还没有指向目标,是悬浮指针。后面CreateListTail(&L,12);中的&L更有错误!你定义的CreateListTail函数的第一个形参是LinkList *型,而你用&L是传进了一个LinkList **型;这里单从匹配角度说应该写CreateListTail(L,12);才对。不过这里如前述L没有指向,会传过去一个垃圾地址……
追问
那个形参LinkList *L LinkList是ypedef struct Node* LinkList;这么定义的啊 也是**啊 而且主函数里面输入的数据是那个create函数里面创建的第一个节点 而不是头节点
追答
那还是不匹配啊!LinkList是struct Node*,那么LinkList *L就是struct Node **L,而&L不就是struct Node ***L了?把它传给struct Node **L能匹配吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询