欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當前位置:主頁 > 軟件編程 > C語言 >

C語言創(chuàng)建鏈表錯誤之通過指針參數(shù)申請動態(tài)內(nèi)存實例分析

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

本文實例講述了C語言創(chuàng)建鏈表中經(jīng)典錯誤的通過指針參數(shù)申請動態(tài)內(nèi)存,分享給大家供大家參考之用。具體實例如下:

#include <stdio.h>
#include <stdlib.h>// 用malloc要包含這個頭文件

typedef struct node
{
  int data;
  struct node* next;// 這個地方注意結構體變量的定義規(guī)則
} Node;

void createLinklist(Node* pHder, int length)
{
  int i = 0;
  Node* pTail = NULL;
  Node* pTemp = NULL;
  printf("create\n");

  for (i = 0; i < length; i++)
  {
    pTemp = (Node*)malloc(sizeof(Node));// 本來以為錯誤在這個地方,原來是理解錯了
    /* 這句話是給pTemp重新賦值,所以在for里邊和for外邊定義pTemp是無所謂的 */
    pTemp->data = i*10;
    pTemp->next = NULL;
    if (NULL == pHder)
    {
      pHder = pTemp;// 錯誤的關鍵
    }
    else
    {
      pTail->next = pTemp;
    }
    pTail = pTemp;
  }
}

void print(Node* pHeader)
{
  Node* p = pHeader;
  printf("print\n ");
  while(p)
  {
    printf("%4d ", p->data);
    p = p->next;
  }
  putchar('\n');
}

int main(void)
{
  Node* pHeader = NULL;// C和C++中判斷指針為空都是用NULL宏(全大寫)
  createLinklist(pHeader, 10);//這是個很典型的錯誤,錯誤的原因就在這
  /* pHeader是一個Node*型的變量 */
  /* 既然是個變量,那么在傳遞參數(shù)的時候,編譯器必然會給這個變量制作一個臨時副本 */
  /* 假設這個臨時副本是_pHeader_ */
  /* 在剛剛傳遞進去的時候,pHeader和_pHeader_是相同的 */
  /* 但是在動態(tài)申請內(nèi)存之后,_pHeader_指向了新的地址 [[注意]] 它不是在修改_pHeader_指向的內(nèi)容的值,而是修改_pHeader_所指向的地址 */
  /* 而此時pHeader仍然指向原來的地址 */
  /* 所以,其實在createLinklist的整個運行過程中pHeader都沒有受到影響 */
  print(pHeader);

  return 0;
}

上述實例以注釋的形式對易錯點進行了詳細的分析,相信不難理解。希望本文所述對大家C程序數(shù)據(jù)結構與算法設計的學習有所幫助。

網(wǎng)頁制作CMS教程網(wǎng)絡編程軟件編程腳本語言數(shù)據(jù)庫服務器

如果侵犯了您的權利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權所有