user-0 提问: 求教 谢谢

回复:
user: user-1
content: 引用 17 楼 qq_34627769 的回复:[quote=引用 7 楼 trytry1992 的回复:] [quote=引用 5 楼 qq_34627769 的回复:] #include <stdio.h> #include <stdlib.h>  #define MAXSIZE 20 typedef double ElemType; typedef struct list {   ElemType a[MAXSIZE + 1];   int len; } SeqList;  SeqList * InitList(); void InitList2(SeqList **ppList); int ListFull(SeqList *pList); int ListEmpty(SeqList *pList); int ListLen(SeqList *pList); void Error(char *msg); int GetElem(SeqList *pList, int i, ElemType *pElm); int InsertElem(SeqList * pList, int i, ElemType elm); int DelElem(SeqList *pList, int i, ElemType *pElm); void PrintList(SeqList *pList); 这段里面的第一个void InitList2(SeqList **ppList);为什么用二级指针啊 而下面的都是一个星号？  去了解一下局部变量，形参[/quote]case 1:DelStu(pList);break; case 2:DelByName(pList);break;这样的while  case对吗  case后面直接跟的线性函数  [/quote]  应该是switch后面才用case，while里用正常的判断语句把，比如if，else if，还有在条件语句里这样写一般是没错的

user: user-2
content: 箭头指向的当然是指针了啊！

user: user-3
content: 写代码的人　自己定义的

user: user-0
content: 引用 7 楼 trytry1992 的回复:[quote=引用 5 楼 qq_34627769 的回复:] #include <stdio.h> #include <stdlib.h>  #define MAXSIZE 20 typedef double ElemType; typedef struct list {   ElemType a[MAXSIZE + 1];   int len; } SeqList;  SeqList * InitList(); void InitList2(SeqList **ppList); int ListFull(SeqList *pList); int ListEmpty(SeqList *pList); int ListLen(SeqList *pList); void Error(char *msg); int GetElem(SeqList *pList, int i, ElemType *pElm); int InsertElem(SeqList * pList, int i, ElemType elm); int DelElem(SeqList *pList, int i, ElemType *pElm); void PrintList(SeqList *pList); 这段里面的第一个void InitList2(SeqList **ppList);为什么用二级指针啊 而下面的都是一个星号？  去了解一下局部变量，形参[/quote]case 1:DelStu(pList);break; case 2:DelByName(pList);break;这样的while  case对吗  case后面直接跟的线性函数

user: user-4
content: 说白了，这是一个结构体指针，首先是指针，然后指向一个结构体。指针引用结构体内部的元素，就得用箭头，不是指针用点。

user: user-5
content: 引用 13 楼 qq_34627769 的回复:[quote=引用 12 楼 zhao4zhong1 的回复:] A->B 等价于 (*A).B可以用汉语翻译一下A->B   (*A).B吗  ，谢谢啦[/quote] //A->B //等价于 //(*A).B #include <stdio.h> struct S {     int B; }; struct S cA; struct S *A; int main() {     cA.B=13;     A=&cA;     printf("  A->B:%d\n",  A->B);     printf("(*A).B:%d\n",(*A).B);     return 0; } //  A->B:13 //(*A).B:13 //

user: user-0
content: 引用 12 楼 zhao4zhong1 的回复:A->B 等价于 (*A).B可以用汉语翻译一下A->B   (*A).B吗  ，谢谢啦

user: user-5
content: A->B 等价于 (*A).B

user: user-0
content: 引用 10 楼 trytry1992 的回复:[quote=引用 8 楼 qq_34627769 的回复:] [quote=引用 4 楼 trytry1992 的回复:] [quote=引用 3 楼 qq_34627769 的回复:] p与箭头必须同时出现吗  箭头出现就是指针了，变量名看你自己了。[/quote]#include <stdio.h>  #include <stdlib.h>   #define MAXSIZE 20  typedef double ElemType;  typedef struct list {    ElemType a[MAXSIZE + 1];    int len;  } SeqList;   SeqList * InitList();  void InitList2(SeqList **ppList);  int ListFull(SeqList *pList);  int ListEmpty(SeqList *pList);  int ListLen(SeqList *pList);  void Error(char *msg);  int GetElem(SeqList *pList, int i, ElemType *pElm);  int InsertElem(SeqList * pList, int i, ElemType elm);  int DelElem(SeqList *pList, int i, ElemType *pElm);  void PrintList(SeqList *pList);  这段里面的第一个void InitList2(SeqList **ppList);为什么用二级指针啊 而下面的都是一个星号？ [/quote]  因为他如果只传一级指针进去初始化的是局部变量，没法真正的初始化[/quote]嗯嗯  谢谢啦  很有用

user: user-1
content: 引用 8 楼 qq_34627769 的回复:[quote=引用 4 楼 trytry1992 的回复:] [quote=引用 3 楼 qq_34627769 的回复:] p与箭头必须同时出现吗  箭头出现就是指针了，变量名看你自己了。[/quote]#include <stdio.h>  #include <stdlib.h>   #define MAXSIZE 20  typedef double ElemType;  typedef struct list {    ElemType a[MAXSIZE + 1];    int len;  } SeqList;   SeqList * InitList();  void InitList2(SeqList **ppList);  int ListFull(SeqList *pList);  int ListEmpty(SeqList *pList);  int ListLen(SeqList *pList);  void Error(char *msg);  int GetElem(SeqList *pList, int i, ElemType *pElm);  int InsertElem(SeqList * pList, int i, ElemType elm);  int DelElem(SeqList *pList, int i, ElemType *pElm);  void PrintList(SeqList *pList);  这段里面的第一个void InitList2(SeqList **ppList);为什么用二级指针啊 而下面的都是一个星号？ [/quote]  因为他如果只传一级指针进去初始化的是局部变量，没法真正的初始化

user: user-0
content: 引用 6 楼 trytry1992 的回复:[quote=引用 5 楼 qq_34627769 的回复:] #include <stdio.h> #include <stdlib.h>  #define MAXSIZE 20 typedef double ElemType; typedef struct list {   ElemType a[MAXSIZE + 1];   int len; } SeqList;  SeqList * InitList(); void InitList2(SeqList **ppList); int ListFull(SeqList *pList); int ListEmpty(SeqList *pList); int ListLen(SeqList *pList); void Error(char *msg); int GetElem(SeqList *pList, int i, ElemType *pElm); int InsertElem(SeqList * pList, int i, ElemType elm); int DelElem(SeqList *pList, int i, ElemType *pElm); void PrintList(SeqList *pList); 这段里面的第一个void InitList2(SeqList **ppList);为什么用二级指针啊 而下面的都是一个星号？  你把实现发出来，不要就发个声明，不过照这样来看是初始化一个链表，要初始化一个指针，就得传入那个指针的指针[/quote]对的就是一个链表，我是大一的网络工程专业正在学习数据结构你的意思是初始化一个链表就要传指针的指针是吧 这样说感觉能清楚一些谢谢哈     还有“ 实现”是什么意思啊

user: user-0
content: 引用 4 楼 trytry1992 的回复:[quote=引用 3 楼 qq_34627769 的回复:] p与箭头必须同时出现吗  箭头出现就是指针了，变量名看你自己了。[/quote]#include <stdio.h>  #include <stdlib.h>   #define MAXSIZE 20  typedef double ElemType;  typedef struct list {    ElemType a[MAXSIZE + 1];    int len;  } SeqList;   SeqList * InitList();  void InitList2(SeqList **ppList);  int ListFull(SeqList *pList);  int ListEmpty(SeqList *pList);  int ListLen(SeqList *pList);  void Error(char *msg);  int GetElem(SeqList *pList, int i, ElemType *pElm);  int InsertElem(SeqList * pList, int i, ElemType elm);  int DelElem(SeqList *pList, int i, ElemType *pElm);  void PrintList(SeqList *pList);  这段里面的第一个void InitList2(SeqList **ppList);为什么用二级指针啊 而下面的都是一个星号？

user: user-1
content: 引用 5 楼 qq_34627769 的回复:#include <stdio.h> #include <stdlib.h>  #define MAXSIZE 20 typedef double ElemType; typedef struct list {   ElemType a[MAXSIZE + 1];   int len; } SeqList;  SeqList * InitList(); void InitList2(SeqList **ppList); int ListFull(SeqList *pList); int ListEmpty(SeqList *pList); int ListLen(SeqList *pList); void Error(char *msg); int GetElem(SeqList *pList, int i, ElemType *pElm); int InsertElem(SeqList * pList, int i, ElemType elm); int DelElem(SeqList *pList, int i, ElemType *pElm); void PrintList(SeqList *pList); 这段里面的第一个void InitList2(SeqList **ppList);为什么用二级指针啊 而下面的都是一个星号？  去了解一下局部变量，形参

user: user-1
content: 引用 5 楼 qq_34627769 的回复:#include <stdio.h> #include <stdlib.h>  #define MAXSIZE 20 typedef double ElemType; typedef struct list {   ElemType a[MAXSIZE + 1];   int len; } SeqList;  SeqList * InitList(); void InitList2(SeqList **ppList); int ListFull(SeqList *pList); int ListEmpty(SeqList *pList); int ListLen(SeqList *pList); void Error(char *msg); int GetElem(SeqList *pList, int i, ElemType *pElm); int InsertElem(SeqList * pList, int i, ElemType elm); int DelElem(SeqList *pList, int i, ElemType *pElm); void PrintList(SeqList *pList); 这段里面的第一个void InitList2(SeqList **ppList);为什么用二级指针啊 而下面的都是一个星号？  你把实现发出来，不要就发个声明，不过照这样来看是初始化一个链表，要初始化一个指针，就得传入那个指针的指针

user: user-0
content: #include <stdio.h> #include <stdlib.h>  #define MAXSIZE 20 typedef double ElemType; typedef struct list {   ElemType a[MAXSIZE + 1];   int len; } SeqList;  SeqList * InitList(); void InitList2(SeqList **ppList); int ListFull(SeqList *pList); int ListEmpty(SeqList *pList); int ListLen(SeqList *pList); void Error(char *msg); int GetElem(SeqList *pList, int i, ElemType *pElm); int InsertElem(SeqList * pList, int i, ElemType elm); int DelElem(SeqList *pList, int i, ElemType *pElm); void PrintList(SeqList *pList); 这段里面的第一个void InitList2(SeqList **ppList);为什么用二级指针啊 而下面的都是一个星号？

user: user-1
content: 引用 3 楼 qq_34627769 的回复:p与箭头必须同时出现吗  箭头出现就是指针了，变量名看你自己了。

user: user-0
content: p与箭头必须同时出现吗

user: user-0
content: 那要是没有箭头 只有p那也是指针吗   还是必须p与指针同时出现才是指针啊

user: user-1
content: 箭头代表pList是个指针，一般来说变量名是p开头的就是指针的意思 pointer

user: user-0
content: 引用 14 楼 zhao4zhong1 的回复:[quote=引用 13 楼 qq_34627769 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] A->B 等价于 (*A).B可以用汉语翻译一下A->B   (*A).B吗  ，谢谢啦[/quote] //A->B //等价于 //(*A).B #include <stdio.h> struct S {     int B; }; struct S cA; struct S *A; int main() {     cA.B=13;     A=&cA;     printf("  A->B:%d\n",  A->B);     printf("(*A).B:%d\n",(*A).B);     return 0; } //  A->B:13 //(*A).B:13 // [/quote]谢谢