程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 由鏈表初始化看C語言的二級指針

由鏈表初始化看C語言的二級指針

編輯:關於C
先來看C語言創建鏈表、插入節點和遍歷鏈表的一段代碼:   [c]   #include <stdio.h>   #include <stdlib.h>      typedef int ElemType;      typedef struct Node{       ElemType elem;       struct Node *next;   }Node, *LinkedList;      //void init_linkedlist(LinkedList *list) {   void init_linkedlist(LinkedList *list) {       *list = (LinkedList)malloc(sizeof(Node));       (*list)->next = NULL;   }      void insert(LinkedList list, ElemType elem) {       Node *p, *q;       q = list;       p = (Node *)malloc(sizeof(Node));       p->elem = elem;       p->next = NULL;       while(q->next != NULL) q = q->next;       q->next = p;   }      void main() {       LinkedList list, p;       init_linkedlist(&list);       insert(list, 3);       insert(list, 4);       insert(list, 5);       p = list->next;       while(p != NULL) {           printf("%4d", p->elem);           p = p->next;       }       printf("\n");   }    這個小程序完成的功能很簡單,創建一個鏈表,然後插入3,4,5這三個整數,最後遍歷鏈表輸出每個節點中的整數。但是大家注意到沒有,在main函數中,初始化鏈表的函數參數的是一個二級指針,為什麼要使用一個二級指針作為參數呢?在任何一本C語言的教材上,都會寫C語言的函數參數傳遞是值傳遞方式,所有的參數都是通過值傳遞的,使用指針作為參數可以在函數中改變參數的值(此處感覺表達有誤,但是想不到更好的表達方式)。可能有人會有疑問了,在上面代碼的main函數中初始化鏈表的調用函數代碼   [java]   init_linkedlist(&list);    list已經是一個指針了,為什麼要傳遞一個指針的地址,直接使用指針不行嗎?確實不行。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved