| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4668 人关注过本帖, 1 人收藏
标题:指向结构体的指针作为函数形参
只看楼主 加入收藏
莫丶
Rank: 2
来 自:济南大学
等 级:论坛游民
帖 子:48
专家分:45
注 册:2011-1-2
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:4 
指向结构体的指针作为函数形参
下面程序中CreateList_L函数前两个是对的,第三个是错的,谁能解释一下这3个有啥区别,第三个为什么错了?
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
     int data;
     struct LNode *next;
}LNode,*LinkList;
void CreateList_L(LinkList &L,int n){
     //逆序输入n个元素的值,建立带头结点的单链线性表L
     int i;
     LNode *p;
     L=(LinkList )malloc(sizeof(LNode));
     L->next=NULL;
     for(i=n;i>0;i--){
         p=(LinkList )malloc(sizeof(LNode));
         printf("请输入");
         scanf("%d",&p->data);
         p->next=L->next;
         L->next=p;
     }
}

void CreateList_L(LinkList *L,int n){
      //逆序输入n个元素的值,建立带头结点的单链线性表L
      int i;
      LNode *p;
      (*L)=(LinkList )malloc(sizeof(LNode));
      (*L)->next=NULL;
      for(i=n;i>0;i--){
          p=(LinkList )malloc(sizeof(LNode));
          printf("请输入");
          scanf("%d",&p->data);
          p->next=(*L)->next;
          (*L)->next=p;
      }
}

void CreateList_L(LNode *L,int n){
    //逆序输入n个元素的值,建立带头结点的单链线性表L
    int i;
    LNode *p;
    L=(LinkList )malloc(sizeof(LNode));
    L->next=NULL;
    for(i=n;i>0;i--){
        p=(LinkList )malloc(sizeof(LNode));
        printf("请输入");
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
}

void main(){
     LinkList  L=NULL,p=NULL;
     int n;
     printf("输入元素数目:");
     scanf("%d",&n);
     printf("\n逆序创建链式表Lb\n");
     CreateList_L( L, n);
     p=L;
     printf ( "\n链式表Lb内容为:\n" );
     while(p->next!=NULL)
     {  
         p=p->next;
         printf("%d ",p->data);
     }
}
搜索更多相关主题的帖子: 结构体 
2011-09-28 22:38
莫丶
Rank: 2
来 自:济南大学
等 级:论坛游民
帖 子:48
专家分:45
注 册:2011-1-2
收藏
得分:0 
没有人咩???
2011-09-28 22:45
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:20 
因为指针要改变,所以只能传指针的引用或者指针的指针。
还是传值与传地址的问题。
2011-09-28 22:45
莫丶
Rank: 2
来 自:济南大学
等 级:论坛游民
帖 子:48
专家分:45
注 册:2011-1-2
收藏
得分:0 
回复 3楼 czsbc
我明白你的意思了,就是传过去的指针被改变了就要用指针的引用或者指针的指针对吧
还是第一次遇到这种情况,确实长见识了
2011-09-28 22:50
cosam
Rank: 4
等 级:业余侠客
帖 子:146
专家分:259
注 册:2011-8-25
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
     int data;
     struct LNode *next;
}LNode,*LinkList;
LinkList CreateList_L(LinkList L,int n){
    //逆序输入n个元素的值,建立带头结点的单链线性表L
    int i;
    LNode *p;
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    for(i=n;i>0;i--){
        p=(LinkList )malloc(sizeof(LNode));
        printf("请输入");
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
    return L; //这个很重要
}
void main(){
     LinkList L=NULL;
     LinkList L1=NULL;
     LinkList p=NULL;
     int n;
     printf("输入元素数目:");
     scanf("%d",&n);
     L=CreateList_L(L1,n);
     printf("\n逆序创建链式表Lb\n");
     CreateList_L( L, n);
     p=L;
     printf ( "\n链式表Lb内容为:\n" );
     while(p->next!=NULL)
     { 
         p=p->next;
         printf("%d ",p->data);
     }
}
物理地址不能改变,不要试图去修改他,
你可以返回一个生成的链表地址,不要试图传进一个地址,让函数去修改;
要修改物理地址,那要用到电焊笔,各种固态电容,电路板,而且还要送到厂家那里放到流水线来做,我们用数学函数是做不到的。
最后或者让 CreateList_L()具有链表地址的返回值吧。

[ 本帖最后由 cosam 于 2011-9-29 06:22 编辑 ]
2011-09-29 05:58
快速回复:指向结构体的指针作为函数形参
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025679 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved