最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年09月15日 15:06:11   投稿:shichen2014  
這篇文章主要介紹了C語(yǔ)言創(chuàng)建鏈表錯(cuò)誤之通過(guò)指針參數(shù)申請(qǐng)動(dòng)態(tài)內(nèi)存,是鏈表創(chuàng)建過(guò)程中非常常見(jiàn)的經(jīng)典錯(cuò)誤。實(shí)例中做了較為詳盡的分析,需要的朋友可以參考下

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

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

typedef struct node
{
  int data;
  struct node* next;// 這個(gè)地方注意結(jié)構(gòu)體變量的定義規(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));// 本來(lái)以為錯(cuò)誤在這個(gè)地方,原來(lái)是理解錯(cuò)了
    /* 這句話是給pTemp重新賦值,所以在for里邊和for外邊定義pTemp是無(wú)所謂的 */
    pTemp->data = i*10;
    pTemp->next = NULL;
    if (NULL == pHder)
    {
      pHder = pTemp;// 錯(cuò)誤的關(guān)鍵
    }
    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宏(全大寫(xiě))
  createLinklist(pHeader, 10);//這是個(gè)很典型的錯(cuò)誤,錯(cuò)誤的原因就在這
  /* pHeader是一個(gè)Node*型的變量 */
  /* 既然是個(gè)變量,那么在傳遞參數(shù)的時(shí)候,編譯器必然會(huì)給這個(gè)變量制作一個(gè)臨時(shí)副本 */
  /* 假設(shè)這個(gè)臨時(shí)副本是_pHeader_ */
  /* 在剛剛傳遞進(jìn)去的時(shí)候,pHeader和_pHeader_是相同的 */
  /* 但是在動(dòng)態(tài)申請(qǐng)內(nèi)存之后,_pHeader_指向了新的地址 [[注意]] 它不是在修改_pHeader_指向的內(nèi)容的值,而是修改_pHeader_所指向的地址 */
  /* 而此時(shí)pHeader仍然指向原來(lái)的地址 */
  /* 所以,其實(shí)在createLinklist的整個(gè)運(yùn)行過(guò)程中pHeader都沒(méi)有受到影響 */
  print(pHeader);

  return 0;
}

上述實(shí)例以注釋的形式對(duì)易錯(cuò)點(diǎn)進(jìn)行了詳細(xì)的分析,相信不難理解。希望本文所述對(duì)大家C程序數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)的學(xué)習(xí)有所幫助。

相關(guān)文章

  • C++獲得文件狀態(tài)信息的方法

    C++獲得文件狀態(tài)信息的方法

    這篇文章主要介紹了C++獲得文件狀態(tài)信息的方法,包括文件狀態(tài)信息、文件所在磁盤(pán)盤(pán)符、文件創(chuàng)建時(shí)間、訪問(wèn)時(shí)間及修改日期等,需要的朋友可以參考下
    2015-07-07
  • C語(yǔ)言程序環(huán)境和預(yù)處理詳解分析

    C語(yǔ)言程序環(huán)境和預(yù)處理詳解分析

    大家有沒(méi)有想過(guò),在vs2019的編譯器上只要按下Ctrl+F5,一個(gè)test.c的源程序就能變成一個(gè).exe的可執(zhí)行程序,這其中是如何通過(guò)編譯產(chǎn)生的呢,本章就和大家一起把其中的知識(shí)和重點(diǎn)的預(yù)處理一起學(xué)習(xí)一下
    2022-03-03
  • C++中vector類的一些簡(jiǎn)單實(shí)現(xiàn)

    C++中vector類的一些簡(jiǎn)單實(shí)現(xiàn)

    C++中的std::vector是一個(gè)動(dòng)態(tài)數(shù)組(也被稱為可變大小數(shù)組)的容器類,它是C++標(biāo)準(zhǔn)庫(kù)提供的其中一種容器類,提供了方便的操作和管理動(dòng)態(tài)數(shù)組的功能,本文就給大家介紹了C++中vector類的簡(jiǎn)單實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2023-08-08
  • C++ Boost Optional示例超詳細(xì)講解

    C++ Boost Optional示例超詳細(xì)講解

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11
  • C語(yǔ)言中數(shù)據(jù)是如何存儲(chǔ)在內(nèi)存中的

    C語(yǔ)言中數(shù)據(jù)是如何存儲(chǔ)在內(nèi)存中的

    使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來(lái)存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來(lái)分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么
    2022-04-04
  • C++回溯算法中的全排列問(wèn)題分析探討

    C++回溯算法中的全排列問(wèn)題分析探討

    遞歸中遇到一個(gè)問(wèn)題全排列的問(wèn)題,我看見(jiàn)回溯特別神奇,特此記錄一下。對(duì)比一下深度優(yōu)先搜索與廣度優(yōu)先搜索,個(gè)人感覺(jué)這里的回溯像是一種遞歸樹(shù)中的深度優(yōu)先搜索的算法,他不斷構(gòu)造往下延伸的深度,使其達(dá)到完全編列
    2023-03-03
  • C語(yǔ)言中的程序環(huán)境與預(yù)處理詳情

    C語(yǔ)言中的程序環(huán)境與預(yù)處理詳情

    這篇文章主要介紹了C語(yǔ)言中的程序環(huán)境與預(yù)處理詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • C++-操作符重載、并實(shí)現(xiàn)復(fù)數(shù)類詳解

    C++-操作符重載、并實(shí)現(xiàn)復(fù)數(shù)類詳解

    這篇文章主要介紹了C++-操作符重載、并實(shí)現(xiàn)復(fù)數(shù)類,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • C++實(shí)現(xiàn)LeetCode(128.求最長(zhǎng)連續(xù)序列)

    C++實(shí)現(xiàn)LeetCode(128.求最長(zhǎng)連續(xù)序列)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(128.求最長(zhǎng)連續(xù)序列),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++逆向分析移除鏈表元素實(shí)現(xiàn)方法詳解

    C++逆向分析移除鏈表元素實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(203.移除鏈表元素),本篇文章通過(guò)逆向分析的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2022-11-11

最新評(píng)論

抚顺市| 南昌县| 宜良县| 元朗区| 宣恩县| 澄迈县| 青海省| 蒙山县| 宜川县| 江源县| 庆元县| 浮梁县| 临桂县| 营山县| 开江县| 广州市| 舟曲县| 江津市| 宁明县| 土默特右旗| 梁山县| 沭阳县| 孝义市| 奎屯市| 永兴县| 诏安县| 京山县| 万安县| 绥德县| 上林县| 沁水县| 新乡市| 伽师县| 呼玛县| 沐川县| 东海县| 蒙山县| 九寨沟县| 大田县| 搜索| 克山县|