国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言指針入門學(xué)習(xí)、知識(shí)點(diǎn)梳理(四)

這篇具有很好參考價(jià)值的文章主要介紹了C語言指針入門學(xué)習(xí)、知識(shí)點(diǎn)梳理(四)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本篇內(nèi)容:指針星號(hào)的三種含義以及指針在函數(shù)調(diào)用時(shí),與實(shí)參、形參的變量傳遞關(guān)系,如何通過被調(diào)函數(shù)修改主調(diào)函數(shù)普通變量的值。

傳送門:

C語言指針入門學(xué)習(xí)、概念梳理(一)

C語言指針入門學(xué)習(xí)、概念梳理(二)

C語言指針入門學(xué)習(xí)、知識(shí)點(diǎn)梳理(三)

C語言指針入門學(xué)習(xí)、知識(shí)點(diǎn)梳理(四)


1. 星號(hào)*的含義:
  1. 乘法
  2. 定義指針變量:int * p; //定義了一個(gè)名叫p的指針變量,int *表示p只能存放int整型變量的地址
  3. 指針運(yùn)算符:放在已經(jīng)定義好的指針變量的前面,如果p是一個(gè)已定義好的指針變量,則p表示以p的內(nèi)容為地址的變量
    int * p;中的星號(hào)與
    P = 5中的星號(hào)不是同一個(gè),前者表示p是一個(gè)指針變量,后者表示取值運(yùn)算符,*p等同于5

C語言變量中的約定俗成:整型用ijkl 浮點(diǎn)型用xyz 指針用pqst

# include <stdio.h>

int main(void)
{
	int * p;   //該語句等價(jià)于 int *p;   也等價(jià)于int* p; 一般來說寫法寫int * p;
	int i = 5;
	char ch = 'A';    //單個(gè)字符必須用單括號(hào),否則會(huì)被系統(tǒng)認(rèn)成變量
	p = &i;           //正確,*p是以p的內(nèi)容為地址的變量
	*p = 99;          //p接收了i的地址,所以*p就等同于i,即i的值為被賦值99
	printf("i = %d, *p = %d\n", i, *p);
	//p = &ch;        //error  類型不一致
	//p = ch;         //error  類型不一致
	//p = 5;          //error
	return 0;
}

---------------------------------------------------------------------------------------------------------------------------------
運(yùn)行結(jié)果: i = 99, *p = 99;

通過以上程序,可以清楚了解地址及指針的作用,注意區(qū)分 p 、 *p、 &i 、int * p;這些是了解指針、學(xué)習(xí)指針、運(yùn)用指針的基礎(chǔ)知識(shí),務(wù)必熟記于胸。


# include <stdio.h>

void swap_1(int a, int b);     //函數(shù)聲明,此處還可以寫成: void swap_1(int , int )

void swap_2(int * p, int * q)  //形參名字不是*p,*q而是p,q,接收實(shí)參數(shù)據(jù), 函數(shù)結(jié)束后釋放p,q,所以光調(diào)換p,q值不影響主函數(shù)中的a,b
{                              //C語言是值傳遞,此時(shí)p存放a的地址(如1000H),p也有自己的地址(如2000H),
    int * t;                   //*p表示的是a地址中的數(shù)據(jù)(3),修改*p就會(huì)修改變量a的值。      
    t = p; p = q; q = t;       //此處換的是p,q的地址,而沒有換*p,*q,即主函數(shù)中a,b的地址和值都不變,所以輸出結(jié)果還是a = 3, b = 5             
}
void swap_3(int * p, int * q)  //形參名字不是*p,*q而是指針變量p,q,接收實(shí)參數(shù)據(jù)(地址數(shù)據(jù))
{                              //C語言是值傳遞,此時(shí)p存放a的地址(如1000H),p也有自己的地址(如2000H),
    int t;                     //*p,*q等同于a,b為int型,所以為保持類型一致,t也必須是整型int
    t = *p; *p = *q; *q = t;   //*p,*q雖然在子函數(shù)中,但通過地址可以直接修改主函數(shù)中a,b的值,輸出結(jié)果為a = 5, b = 3          
}                              
int main(void)
{
	int a = 3;
	int b = 5;
	//swap_1(a, b);    //不報(bào)錯(cuò),但無法修改主函數(shù)中a,b的值,不能完成交換
	//swap_2(a, b)    //error:錯(cuò)誤,形參是指針變量p和q,p要接收的是整型地址而不是整型變量,應(yīng)改為swap_2(&a, &b);
	//swap_2(&a, &b); //不報(bào)錯(cuò),把a(bǔ)的地址傳遞給p,把b的地址傳遞給q。但是函數(shù)結(jié)束后主函數(shù)中a,b仍未完成交換
	swap_3(&a, &b);   //雖然調(diào)用函數(shù)結(jié)束后,形參指針變量p,q的值會(huì)被釋放,但通過指針*p,*q,主函數(shù)中a,b的值已經(jīng)被改寫了,交換成功
	printf("a = %d, b = %d\n", a, b);
	return 0;
}

void swap_1(int i, int j)    //返回值為void,可以直接寫return; 也可以不寫return,每調(diào)用一次return只能返回一個(gè)值
{                            
	int t;
	t = i; i = j; j = t;     //等號(hào)兩邊類型一致,不報(bào)錯(cuò),但修改形參的值不影響主函數(shù)變量,無法完成交換
	//return;                //return有返回值,終值函數(shù)的作用
}


------------------------------------------------------------------------------------------------------------------------
三個(gè)函數(shù)中,只有swap_3()才能完成交換,輸出: a = 5, b = 3
其余兩個(gè)函數(shù),輸出結(jié)果都是: a = 3, b = 5 


總結(jié)一句話就是: 熟練掌握形參、實(shí)參、指針變量、地址、星號(hào)的概念,只有這樣才不容易被程序中各種變量繞暈。
1.形參互換,調(diào)用函數(shù)結(jié)束后形參p,q被釋放,所以沒法兒影響main主函數(shù)中的實(shí)參a,b,無法完成交換
2.但是由于的特性,形參p,q通過拷貝實(shí)參a,b的地址,可以利用*p,*q遠(yuǎn)程修改主函數(shù)中a,b的值,完成交換。
3.形參和實(shí)參永遠(yuǎn)不同,他們在不同的函數(shù)中,分配的空間也不同,屬于不同的變量,主函數(shù)傳遞給調(diào)用函數(shù)的值相當(dāng)于是拷貝過去的,并不影響主函數(shù)中的實(shí)參,只有調(diào)用函數(shù)有了主函數(shù)變量的地址時(shí),才可以直接控制修改實(shí)參變量,而指針可以通過地址在調(diào)用函數(shù)中遠(yuǎn)程修改主函數(shù)中的變量值。

歸納:如何通過被調(diào)函數(shù)修改主調(diào)函數(shù)普通變量的值?

  1. 實(shí)參必須為該普通變量的地址,如: 函數(shù)名(&a,&b)
  2. 形參必須為指針變量,如 int * p, int *q
  3. 在被調(diào)函數(shù)中通過 *形參名 = … 的方式就可以修改主調(diào)函數(shù)一個(gè)以上的相關(guān)變量的值

(能力有限,博客僅供廣大網(wǎng)友參考學(xué)習(xí),若有不足之處,還望指正,共同進(jìn)步!)文章來源地址http://www.zghlxwxcb.cn/news/detail-491059.html

到了這里,關(guān)于C語言指針入門學(xué)習(xí)、知識(shí)點(diǎn)梳理(四)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【數(shù)據(jù)庫通關(guān)之路】 MySQL 全路線學(xué)習(xí)知識(shí)點(diǎn)梳理(上)

    【數(shù)據(jù)庫通關(guān)之路】 MySQL 全路線學(xué)習(xí)知識(shí)點(diǎn)梳理(上)

    這是一篇 MySQL 通關(guān) 硬核經(jīng)驗(yàn)學(xué)習(xí)路線,包括數(shù)據(jù)庫相關(guān)知識(shí),SQL語句的使用,數(shù)據(jù)庫約束,設(shè)計(jì)等。專為小白整理,針對(duì)數(shù)據(jù)庫零基礎(chǔ)的朋友們,手把手帶你學(xué)習(xí)MySQL,讓你輕松學(xué)會(huì)! 文末包郵送《WPS Office高效辦公:數(shù)據(jù)處理與分析 》1本(點(diǎn)擊下方目錄直達(dá)),本文每+1000瀏覽

    2024年02月04日
    瀏覽(23)
  • 【W(wǎng)EB前端進(jìn)階之路】 HTML 全路線學(xué)習(xí)知識(shí)點(diǎn)梳理(中)

    【W(wǎng)EB前端進(jìn)階之路】 HTML 全路線學(xué)習(xí)知識(shí)點(diǎn)梳理(中)

    本文是HTML零基礎(chǔ)學(xué)習(xí)系列的第二篇文章,點(diǎn)此閱讀 上一篇文章。 標(biāo)題是通過 h1 - h6 標(biāo)簽進(jìn)行定義的。 h1 定義最大的標(biāo)題。 h6 定義最小的標(biāo)題。瀏覽器會(huì)自動(dòng)地在標(biāo)題的前后添加空行,例如: 標(biāo)題用來正確的顯示文章結(jié)構(gòu) ,通過不同的標(biāo)題可以為文章建立索引,所以,標(biāo)題

    2024年02月02日
    瀏覽(61)
  • 【數(shù)據(jù)庫通關(guān)之路】 MySQL 全路線學(xué)習(xí)知識(shí)點(diǎn)梳理(中)

    【數(shù)據(jù)庫通關(guān)之路】 MySQL 全路線學(xué)習(xí)知識(shí)點(diǎn)梳理(中)

    本文是 MYSQL零基礎(chǔ)小白學(xué)習(xí) 系列的第二篇文章,點(diǎn)此閱讀 上一篇文章 文末包郵送《分布式中間件核心原理與RocketMQ最佳實(shí)踐 》 (點(diǎn)擊下方目錄直達(dá))一本,本文每+1000瀏覽額外加抽一人 需求 :設(shè)計(jì)包含如下信息的學(xué)生表,請注重?cái)?shù)據(jù)類型、長度的合理性。 編號(hào) 姓名,姓名最

    2023年04月20日
    瀏覽(21)
  • 【初階】C語言指針詳解——指針必備的7大知識(shí)點(diǎn)

    【初階】C語言指針詳解——指針必備的7大知識(shí)點(diǎn)

    本篇文章我們來了解C語言中指針的相關(guān)內(nèi)容,對(duì)于指針可以說是C語言學(xué)習(xí)中較難理解的內(nèi)容。本篇以了解指針為目的,以初識(shí)為導(dǎo)向,從表層入手,淺析C指針! 理解指針的 兩個(gè)要點(diǎn): 指針是內(nèi)存中一個(gè)最小單元的編號(hào),也就是地址 平時(shí)口語中說的指針,通常指的是指針變

    2024年02月02日
    瀏覽(23)
  • UE5學(xué)習(xí)筆記(一)——界面功能梳理&第一天知識(shí)點(diǎn)記錄

    UE5學(xué)習(xí)筆記(一)——界面功能梳理&第一天知識(shí)點(diǎn)記錄

    學(xué)習(xí)UE5的第一步,是軟件安裝。 默認(rèn)是安裝好的,由于安裝沒有太多技術(shù)含量,所以就沒有專門做記錄。 這里有個(gè)注意點(diǎn),虛幻引擎是整合在Epic games launcher中的,也就是說開發(fā)引擎內(nèi)嵌在游戲平臺(tái)上,打個(gè)比方,就是如果你要下unity你必須先下一個(gè)steam的感覺。 當(dāng)然,在完

    2024年02月04日
    瀏覽(96)
  • 【C語言】讓你不再害怕“指針”【知識(shí)點(diǎn)詳解】

    【C語言】讓你不再害怕“指針”【知識(shí)點(diǎn)詳解】

    目錄 一.什么是指針為什么需要指針? 1.什么是指針? 2.為什么需要指針? 以一個(gè)代碼為例觀察地址:(這里我們可以通過調(diào)試和打印兩種方式觀察) 1.調(diào)試觀察: 2.打印觀察(地址是用%p 打?。?二.地址編號(hào)的來源指針變量的大小 產(chǎn)生來源 指針變量大小 三.指針類型??

    2024年02月08日
    瀏覽(26)
  • mysql知識(shí)點(diǎn)梳理

    mysql知識(shí)點(diǎn)梳理

    1.檢查是否走了索引,如果沒有則優(yōu)化SQL利用索引 2.檢查所利用的索引,是否是最優(yōu)索引 3.檢查所查字段是否都是必須的,是否查詢了過多字段,查出了多余數(shù)據(jù);查詢太多的字段會(huì)回表 4.檢查表中數(shù)據(jù)是否過多,是否應(yīng)該進(jìn)行分庫分表了 5.檢查數(shù)據(jù)庫實(shí)例所在機(jī)器的性能配

    2024年04月12日
    瀏覽(26)
  • JAVA知識(shí)點(diǎn)梳理

    boo=false; //每一輪排序都會(huì)將最大的一個(gè)排到最后 所以-i 2.第一次不同如果是數(shù)值,返回長度差 第一次不同如果是字符,返回兩個(gè)字符的Ascrll碼的差值

    2024年02月12日
    瀏覽(27)
  • 多線程基礎(chǔ)知識(shí)點(diǎn)梳理

    多線程基礎(chǔ)知識(shí)點(diǎn)梳理

    進(jìn)程(process):進(jìn)程是計(jì)算機(jī)中的一個(gè)任務(wù),比如打開瀏覽器、IntelliJ IDEA。 線程(thread):線程是進(jìn)程內(nèi)部的子任務(wù)。比如IDEA在敲代碼的同時(shí)還能自動(dòng)保存、自動(dòng)導(dǎo)包,都是子線程做的。 進(jìn)程和線程的關(guān)系就是一個(gè)進(jìn)程包含一個(gè)或多個(gè)線程。 線程是操作系統(tǒng)調(diào)度的最小任

    2024年02月04日
    瀏覽(99)
  • 單片機(jī)----匯編語言入門知識(shí)點(diǎn)

    單片機(jī)----匯編語言入門知識(shí)點(diǎn)

    目錄 匯編語句的格式 匯編語句的兩個(gè)基本語句 子程序的調(diào)用 查表程序設(shè)計(jì) 1.x和y均為單字節(jié)數(shù)的查表程序設(shè)計(jì) 2.x為單字節(jié)數(shù)y為雙字節(jié)數(shù)的查表程序設(shè)計(jì) 3.x和y均為雙字節(jié)數(shù)的查表程序設(shè)計(jì) 分支轉(zhuǎn)移程序設(shè)計(jì) 1.單分支選擇結(jié)構(gòu) 2.多分支選擇結(jié)構(gòu) 循環(huán)程序設(shè)計(jì) (1) 計(jì)數(shù)循環(huán)控

    2024年04月28日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包