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

C語言中關(guān)于指針變量的坑

 更新時間:2021年04月06日 10:09:16   作者:猿DUDU  
這篇文章主要給大家介紹了關(guān)于C語言中關(guān)于指針變量坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

先看一個初始化帶頭結(jié)點單鏈表的例子,LNode是結(jié)點變量,LinkList是結(jié)點指針變量,等同于LNode*

typedef struct LNode{		// 定義單鏈表節(jié)點類型 
	int data;
	struct LNode *next; 
}LNode,*LinkList;

例1、錯誤的方法:初始化帶頭結(jié)點的單鏈表

void InitList(LinkList L)
{	
	L = (LinkList)malloc(sizeof(LNode));
	L->data = 3;
 L->next = NULL;
}

void Empty(LinkList L)
{
	if(NULL == L)
	{
		printf("鏈表不存在\n"); 
	}
	else if(NULL == L->next)
	{
		printf("空表\n"); 
	} 
} 

int main()
{
 	LNode p;
 	p.data = 2;
 	printf("p.data = %d\n",p.data);
 	
 	LinkList L = NULL;
	InitList(L);
	printf("L->data = %d\n",L->data);
 return 0;
}

輸出結(jié)果

p.data = 2
鏈表不存在

例2、正確的方法:初始化帶頭結(jié)點的單鏈表

void InitList(LinkList *L)
{	
	(*L) = (LinkList)malloc(sizeof(LNode));
	(*L)->data = 3;
	(*L)->next = NULL;
}

void Empty(LinkList L)
{
	if(NULL == L)
	{
		printf("鏈表不存在\n"); 
	}
	else if(NULL == L->next)
	{
		printf("空表\n"); 
	} 
} 

int main()
{
 	LNode p;
 	p.data = 2;
 	printf("p.data = %d\n",p.data);
 	
 	LinkList L = NULL;
	InitList(&L);
	printf("L->data = %d\n",L->data);
 return 0; 
}

輸出結(jié)果

p.data = 2
空表
L->data = 3

為什么第一個 InitList(LinkList L)函數(shù)不能初始化單鏈表L呢?不是用的地址傳遞嗎?

答:

問題就在于L = (LinkList)malloc(sizeof(LNode));

這里的 L 是InitList函數(shù)的形參,也就是局部變量,函數(shù)運行結(jié)束后就不存在了。

而main函數(shù)中的 L 指針變量,實際上是存儲在全局變量中的,兩個L不是同一個L。

例1中,main函數(shù)中的 LinkList L 一開始是指向 NULL的

從InitList(L)執(zhí)行開始,雖然InitList函數(shù)中也是對L進行操作,但是此時的L 是InitList函數(shù)中的形參L ,之后的也都是對于形參的操作,如下圖

例1 中傳入的是LinkList 變量L,屬于一級指針,不能對實參指針變量 L本身進行操作,來修改實參 L 的值,使得L指向新分配的LNode,所以實參 L 還是指向NULL,因為輸出結(jié)果“鏈表不存在”。

例2中,傳入的是LinkList 變量的指針 &L,屬于二級指針,可以對實參指針變量 L 本身進行操作,來修改實參 L 的值,使得L指向新分配的LNode,(*L) = (LinkList)malloc(sizeof(LNode));

總結(jié)

到此這篇關(guān)于C語言中指針變量坑的文章就介紹到這了,更多相關(guān)C語言指針變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實現(xiàn)學(xué)生信息管理系統(tǒng)

    C++實現(xiàn)學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++中stringstream的用法和實例

    C++中stringstream的用法和實例

    下面小編就為大家?guī)硪黄狢++中stringstream的用法和實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C語言strlen函數(shù)全方位講解

    C語言strlen函數(shù)全方位講解

    在C語言中我們要獲取字符串的長度,可以使用strlen函數(shù),strlen函數(shù)計算字符串的長度時,直到空結(jié)束字符,但不包括空結(jié)束字符,因為 strlen函數(shù)時不包含最后的結(jié)束字符的,因此一般使用strlen函數(shù)計算的字符串的長度會比使用sizeof計算的字符串的字節(jié)數(shù)要小
    2022-09-09
  • 貪心算法 WOODEN STICKS 實例代碼

    貪心算法 WOODEN STICKS 實例代碼

    貪心算法 WOODEN STICKS 實例代碼,需要的朋友可以參考一下
    2013-05-05
  • C語言實現(xiàn)單元測試的示例詳解

    C語言實現(xiàn)單元測試的示例詳解

    單元測試(unit testing),是指對軟件中的最小可測試單元進行檢查和驗證。這篇文章主要為大家介紹了C語言實現(xiàn)單元測試的方法,需要的可以參考一下
    2022-09-09
  • Matlab實現(xiàn)統(tǒng)計集合中各元素出現(xiàn)次數(shù)的示例代碼

    Matlab實現(xiàn)統(tǒng)計集合中各元素出現(xiàn)次數(shù)的示例代碼

    統(tǒng)計數(shù)組中各個元素數(shù)量是一個很常用的功能,本文主要為大家介紹了如何利用Matlab優(yōu)雅的統(tǒng)計集合中各元素出現(xiàn)的次數(shù),感興趣的可以了解一下
    2022-05-05
  • C++ std::initializer_list 實現(xiàn)原理解析及遇到問題

    C++ std::initializer_list 實現(xiàn)原理解析及遇到問題

    這篇文章主要介紹了C++ std::initializer_list 實現(xiàn)原理勘誤,本文通過源碼解析給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Visual?Studio?2022?配置?PCL?1.12.1?的問題小結(jié)

    Visual?Studio?2022?配置?PCL?1.12.1?的問題小結(jié)

    這篇文章主要介紹了Visual?Studio?2022?配置?PCL?1.12.1?的經(jīng)驗總結(jié)分享,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 使用ShellClass獲取文件屬性詳細信息的實現(xiàn)方法

    使用ShellClass獲取文件屬性詳細信息的實現(xiàn)方法

    本篇文章是對ShellClass獲取文件屬性詳細信息的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式

    ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式

    這篇文章主要介紹了ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

乌拉特中旗| 邯郸县| 石景山区| 丹棱县| 手游| 九台市| 石景山区| 马尔康县| 盐源县| 资中县| 城口县| 霞浦县| 黎城县| 永州市| 昆山市| 师宗县| 靖安县| 漳平市| 陇西县| 资溪县| 湄潭县| 东平县| 东兰县| 平邑县| 武邑县| 延津县| 布拖县| 庆城县| 兴隆县| 商都县| 平阳县| 莒南县| 孝感市| 开平市| 合阳县| 明水县| 青岛市| 雷波县| 临高县| 博白县| 东明县|