久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

大學(xué)生如何優(yōu)雅地使用c語(yǔ)言指針的n種方法-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)公司專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、圍場(chǎng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、商城系統(tǒng)網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為圍場(chǎng)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

一.什么是指針

?

1.指針的概念

(1)指針的初始化

(2)?指針的大小

(3)指針的解引用

2指針的分類

(1)空指針

(2)野指針

(3)指針常量

(4)常量指針

(5)二級(jí)指針

二.指針的應(yīng)用

1.函數(shù)傳參

(1)值傳遞

(2)地址傳遞?

2.函數(shù)傳返回值

三.指針的總結(jié)

1.指針的種類

2.指針的應(yīng)用


一.什么是指針 ? ? ? ?

指針是c語(yǔ)言的精髓所在,如果不會(huì)比較優(yōu)雅地使用指針,也就不能說(shuō)自己熟悉或者掌握c語(yǔ)言編程,正確且優(yōu)雅地使用,可以使程序更加簡(jiǎn)潔高效,每一個(gè)學(xué)習(xí)c語(yǔ)言的小伙伴都應(yīng)該學(xué)習(xí)并掌握指針。指針到底是如何成為c語(yǔ)言的靈魂呢,我們一起來(lái)探索指針的奧秘吧~

1.指針的概念

指針是一種數(shù)據(jù)類型,它存放的是數(shù)據(jù)變量的內(nèi)存地址,定義指針的格式為?數(shù)據(jù)類型 *?指名,如int a=10;int*p=&a;這時(shí)候我們就說(shuō)指針p指向了變量a,將變量a看成一個(gè)房間,房間的內(nèi)容就是10,門牌號(hào)就是0x123456,則指針p存放的就是a房間的門牌號(hào)0x123456,示意圖如下圖所示

(1)指針的初始化

指針定義的時(shí)候可以初始化,初始化的格式為,數(shù)據(jù)類型 *?指針變量名=&變量名,如下圖所示

當(dāng)指針指向數(shù)組的時(shí)候,由于數(shù)組變量名即為數(shù)組的首地址,故可以不用取地址符&

(2)?指針的大小

指針的在操作系統(tǒng)相同的情況,無(wú)論是int型char型還是字符型的類型等指針占用的內(nèi)存大小都是一樣的

輸出結(jié)果

在64位windows操作系統(tǒng)下,幾種數(shù)據(jù)類型的指針都占用8個(gè)字節(jié)

(3)指針的解引用

當(dāng)定義完一個(gè)指針并指向一個(gè)變量時(shí),我們可以通過(guò)指針的解引用符*來(lái)間接訪問(wèn)變量,即定義完指針后,*p就等價(jià)于變量a,而p為變量a的內(nèi)存地址

輸出結(jié)果

再用數(shù)組來(lái)一個(gè)解引用的例子,在學(xué)習(xí)指針前,我們遍歷數(shù)組都是通過(guò)數(shù)組下標(biāo)來(lái)訪問(wèn),而當(dāng)我們接觸到了指針時(shí),我們便可以利用指針來(lái)遍歷數(shù)組

輸出結(jié)果

2指針的分類 (1)空指針

? 當(dāng)我們利用指針進(jìn)行一些操作后,為了避免后面不小心對(duì)某些變量進(jìn)行操作,我們往往會(huì)在操作完成后將指針置空,空指針即指針不指向任何一個(gè)內(nèi)存空間,打印空指針將什么都不會(huì)輸出

(2)野指針

? 野指針的幾種產(chǎn)生情況

1.定義指針時(shí)未初始化,未初始化的指針指向的空間將是隨機(jī)的,如果此時(shí)操作野指針則可能產(chǎn)生一些未知的錯(cuò)誤

輸出結(jié)果

????2.指針訪問(wèn)越界

以訪問(wèn)數(shù)組為例,當(dāng)利用指針訪問(wèn)的時(shí)候,p的指向一旦超過(guò)數(shù)組下標(biāo),則此時(shí)p存放的地址則為未知的空間地址,此時(shí)的指針p也稱之為野指針

輸出結(jié)果?

可以看到打印第7個(gè)變量時(shí)產(chǎn)生了一個(gè)隨機(jī)值,這就是因?yàn)橐爸羔樦赶虻目臻g是隨機(jī)的

? 3.指針釋放后未置空

?? ? 我們?cè)诶弥羔樳M(jìn)行操作完之后需要將指針釋放并置空,而部分小伙伴會(huì)在釋放指針后忘記將指針置空,釋放指針實(shí)質(zhì)上是將指針指向的空間釋放,但是指針依然還在,此時(shí)指針指向的空間已經(jīng)被釋放也就是已經(jīng)不存在,則指針會(huì)指向另外的隨機(jī)空間,此時(shí)的指針也稱為野指針

(3)指針常量

當(dāng)定義指針并初始化時(shí),用const修飾的位置不同而決定是指針常量還是常量指針,int *?const p,此時(shí)的指針p則為指針常量,指針變量也是變量,此時(shí)指針常量意味著指針的值不可以修改,也就是指向不變,相當(dāng)于和初始化指向的空間綁定了,指針常量的性質(zhì)為指針不可修改,而指向的空間的值可以修改

對(duì)指針常量指向其他的變量,編譯器報(bào)錯(cuò)并顯示指針變量為已讀,不可修改

(4)常量指針

? 當(dāng)用const修飾整個(gè)定義表達(dá)式,cconst int *p,此時(shí)指針p為常量指針,即指針指向的空間的值為常量,不可修改,但是指針可以指向其他的空間

當(dāng)常量指針指向的變量的值修改時(shí),編譯器報(bào)錯(cuò)并顯示變量a為已讀,不可修改

(5)二級(jí)指針

?指針不僅可以指向其他數(shù)據(jù)類型的變量,指針也可以指向指針,指向指針的指針?lè)Q為二級(jí)指針,此時(shí)指針存放的是一級(jí)指針變量的地址,二級(jí)指針可以通過(guò)兩次解引用訪問(wèn)變量

輸出結(jié)果為

可以看到輸出結(jié)果第一行為一級(jí)指針解引用后的值,即變量a的值;第二行為二級(jí)指針一次解引用的值,即為一級(jí)指針的值,一級(jí)指針的值即為變量a的地址;第三行為二級(jí)指針二次解引用的值,即為變量a的值?

二.指針的應(yīng)用 1.函數(shù)傳參 (1)值傳遞

?函數(shù)的形參為普通變量時(shí)即為值傳遞,此時(shí)將實(shí)參傳入函數(shù)將不會(huì)修改,我們以交換兩個(gè)變量的值為例

可以看到在函數(shù)內(nèi)兩個(gè)變量的值交換了,但是調(diào)用完函數(shù)后兩個(gè)變量的值并沒(méi)有交換

(2)地址傳遞?

?函數(shù)的形參為指針變量時(shí)即為值傳遞,此時(shí)傳入實(shí)參必須傳入實(shí)參的地址,即需要取地址符&,傳入實(shí)參的地址后,在函數(shù)對(duì)形參修改將會(huì)使實(shí)參也發(fā)生相應(yīng)的修改,我們以交換兩個(gè)變量的值為例

可以看到在函數(shù)內(nèi)兩個(gè)變量的值交換了,調(diào)用完函數(shù)后兩個(gè)變量的值也會(huì)相應(yīng)地交換

2.函數(shù)傳返回值

?在學(xué)習(xí)指針之前,我們利用函數(shù)傳返回值時(shí)只能傳遞一個(gè)值,在學(xué)到指針的時(shí)候,我們便可以在傳返回值時(shí)利用指針傳遞多個(gè)返回值,當(dāng)我們某個(gè)函數(shù)的形參為數(shù)組,且返回值也為數(shù)組時(shí),我們可以利用指針作形參和返回值,我們以冒泡排序?yàn)槔?,傳入任意一個(gè)數(shù)組,然后返回排序后的數(shù)組

#includeint * BubbleSort(int *a) //用指針作為形參,傳入的是數(shù)組首元素的地址
{
	int i=0;
	int j=0;
    //冒泡排序
	for(i=0;i<5;i++)
	{
		for(j=0;j<5-i-1;j++)
		{
			if(a[j]>a[j+1])
			{
				int temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
    //排序完傳回指針
	return a;
}
int main()
{	
	int a[5]={5,9,1,5,7};
	int i=0;
	int *p=BubbleSort(a);//調(diào)用完函數(shù)定義一個(gè)指針接受返回值
	for(i=0;i<5;i++)
    打印調(diào)用完冒泡排序的數(shù)組
	{
		printf("%d\n",*p);
		p++;
	}
		
   	return 0;
}

輸出結(jié)果為

可以看到,將數(shù)組名傳入冒泡排序函數(shù)后數(shù)組的元素進(jìn)行了排序

三.指針的總結(jié) 1.指針的種類

? 指針總體可以分為空指針、野指針、指針常量、常量指針、二級(jí)指針(多級(jí)指針),在學(xué)習(xí)指針是我們要盡量避免空指針和野指針,以免引起一些未知的錯(cuò)誤,根據(jù)使用場(chǎng)景合適地選擇指針?lè)N類,可以有效地提高程序的簡(jiǎn)潔性和可讀性

2.指針的應(yīng)用

? 指針的應(yīng)用最常用的兩個(gè)功能就是函數(shù)傳參和函數(shù)傳返回值

? 在我們想要在函數(shù)內(nèi)修改實(shí)參時(shí)可以使用指針傳參,不過(guò)指針傳參不可濫用,防止在不需要修改實(shí)參時(shí)意外對(duì)實(shí)參進(jìn)行改動(dòng)

?在我們想要函數(shù)傳回?cái)?shù)組、結(jié)構(gòu)體等多個(gè)變量值時(shí)我們可以將指向它們的指針作為返回值,在主函數(shù)調(diào)用函數(shù)后定義指針接受即可

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站名稱:大學(xué)生如何優(yōu)雅地使用c語(yǔ)言指針的n種方法-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://sd-ha.com/article42/dosgec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、小程序開(kāi)發(fā)、網(wǎng)站收錄、全網(wǎng)營(yíng)銷推廣、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)