奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語(yǔ)言

C語(yǔ)言函數(shù)調(diào)用與參數(shù)傳遞

時(shí)間:2025-02-21 18:57:15 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

C語(yǔ)言函數(shù)調(diào)用與參數(shù)傳遞

  函數(shù)是C語(yǔ)言中的基本組成單位,一個(gè)較大的C程序一般可分為若干個(gè)程序模塊,實(shí)現(xiàn)某一特定功能的模塊主要由函數(shù)來(lái)完成。下面是小編收集整理的C語(yǔ)言函數(shù)調(diào)用與參數(shù)傳遞相關(guān)內(nèi)容,歡迎閱讀,希望大家能夠喜歡。

  1、主調(diào)函數(shù)與被調(diào)函數(shù)

  計(jì)算機(jī)在執(zhí)行C程序時(shí)總是從main函數(shù)開(kāi)始,如果遇到要調(diào)用某個(gè)函數(shù),則主函數(shù)稱(chēng)為主調(diào)函數(shù),被調(diào)用者稱(chēng)為被調(diào)函數(shù)。一個(gè)C程序可由一個(gè)main函數(shù)和若干個(gè)其他函數(shù)構(gòu)成,main函數(shù)用來(lái)解決整個(gè)問(wèn)題,它調(diào)用解決小問(wèn)題的其他函數(shù),其他函數(shù)也可以相互調(diào)用。調(diào)用者就是主調(diào)函數(shù),被調(diào)者就是被調(diào)函數(shù),應(yīng)當(dāng)注意,main函數(shù)只能由系統(tǒng)調(diào)用。

  2、實(shí)際參數(shù)與形式參數(shù)

  在調(diào)用有參函數(shù)時(shí),主調(diào)函數(shù)和被調(diào)函數(shù)之間有數(shù)據(jù)傳遞關(guān)系。在主調(diào)函數(shù)中進(jìn)行函數(shù)調(diào)用時(shí),函數(shù)名后面括弧中的參數(shù)稱(chēng)為實(shí)際參數(shù),簡(jiǎn)稱(chēng)實(shí)參。在定義函數(shù)時(shí)函數(shù)名后面括弧中的變量名就是形式參數(shù),簡(jiǎn)稱(chēng)形參。即實(shí)參出現(xiàn)在函數(shù)調(diào)用中,形參出現(xiàn)在函數(shù)定義中。主調(diào)函數(shù)通過(guò)函數(shù)調(diào)用將實(shí)參中的數(shù)據(jù)傳遞給被調(diào)函數(shù)的形參,從而實(shí)現(xiàn)函數(shù)間的數(shù)據(jù)傳遞。另外實(shí)參與形參進(jìn)行數(shù)據(jù)傳遞時(shí),系統(tǒng)要求實(shí)參與形參在數(shù)量、類(lèi)型、順序應(yīng)嚴(yán)格保持一致,這一點(diǎn)在使用上要特別注意。

  3、變量存儲(chǔ)類(lèi)型與作用域

  主調(diào)函數(shù)和被調(diào)函數(shù)數(shù)據(jù)傳遞往往要通過(guò)變量進(jìn)行,不同的變量類(lèi)型影響數(shù)據(jù)的處理結(jié)果。C語(yǔ)言中變量按存儲(chǔ)時(shí)分配的空間不同可以分為自動(dòng)變量,寄存器變量,靜態(tài)變量和外部變量。按變量的生命周期可以分為局部變量和全局變量,局部變量是在一個(gè)函數(shù)內(nèi)部定義的變量,在存儲(chǔ)器的動(dòng)態(tài)存儲(chǔ)區(qū)進(jìn)行分配空間,作用域只在本函數(shù)內(nèi)部有效,比如在主函數(shù)里定義的自動(dòng)變量,寄存器變量,函數(shù)中的形式參數(shù)等都屬于局部變量,在函數(shù)調(diào)用時(shí),系統(tǒng)才為其分配存儲(chǔ)空間,函數(shù)調(diào)用結(jié)束后,空間釋放。而對(duì)于靜態(tài)型局部變量是程序編譯時(shí)由系統(tǒng)在存儲(chǔ)器的靜態(tài)存儲(chǔ)區(qū)為其分配存儲(chǔ)空間,函數(shù)調(diào)用結(jié)束后,空間不釋放,其值要保留到程序退出。全局變量是在程序整個(gè)運(yùn)行期間都要占用內(nèi)存,所以它是全程有效,貫穿于主調(diào)函數(shù)與被調(diào)函數(shù)全過(guò)程,其值也要保留到程序退出為止。

  4、參數(shù)傳遞的本質(zhì)與屬性

  函數(shù)參數(shù)傳遞的過(guò)程,本質(zhì)上是一種賦值過(guò)程即值傳遞過(guò)程,在調(diào)用函數(shù)之前,函數(shù)的每個(gè)實(shí)際參數(shù)將被復(fù)制,復(fù)制的值代替對(duì)應(yīng)的形式參數(shù)。所以形參實(shí)際上得到的不是實(shí)參本身,而是實(shí)參的值或者實(shí)參所代表的值。因此,如果一個(gè)變量傳遞給一個(gè)函數(shù),這個(gè)變量在調(diào)用環(huán)境中所存儲(chǔ)的值并不會(huì)被函數(shù)修改,所以形參的值不會(huì)反過(guò)來(lái)影響實(shí)參,即實(shí)參與形參值傳遞是單向性的。這兩個(gè)問(wèn)題是學(xué)習(xí)和理解函數(shù)參數(shù)傳遞的根本,很多學(xué)習(xí)C語(yǔ)言的人對(duì)這兩個(gè)問(wèn)題不是很理解,下面舉例說(shuō)明函數(shù)調(diào)用時(shí)參數(shù)傳遞過(guò)程。

  4.1 數(shù)值傳遞

  當(dāng)變量為普通變量時(shí),函數(shù)實(shí)參可以是自動(dòng)局部變量,靜態(tài)局部變量,數(shù)組元素,寄存器變量,結(jié)構(gòu)體變量,結(jié)構(gòu)體變量成員,常量等形式,函數(shù)形參為對(duì)應(yīng)類(lèi)型的變量,調(diào)用函數(shù)時(shí),由系統(tǒng)給形參分配存儲(chǔ)單元,存放從實(shí)參復(fù)制過(guò)來(lái)的數(shù)值。函數(shù)調(diào)用結(jié)束后,形參存儲(chǔ)單元釋放。

  例題1:

  #include

  void func1(int x)

  {++x;

  printf (“%d”,x);

  }

  int main()

  {int n=10;

  func1(n);

  printf (“%d”,n);

  return 0 ;

  }

  例題1中main函數(shù)調(diào)用func1函數(shù)時(shí),把實(shí)參n的值10(注意不是n)傳給了形參x,x在func1函數(shù)中進(jìn)行增1運(yùn)算, 這時(shí)x的值發(fā)生了改變,但該值不能返回到實(shí)參n中,因?yàn)閤是func1函數(shù)內(nèi)部定義的變量,屬于局部變量,調(diào)用函數(shù)時(shí),系統(tǒng)為x變量在存儲(chǔ)器的動(dòng)態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)空間,函數(shù)調(diào)用結(jié)束后,x變量被釋放,數(shù)值被清,故n值不變,體現(xiàn)了傳值的單向性。

  4.2 地址值傳遞

  地址值傳遞是指實(shí)參與形參之間傳遞的數(shù)據(jù)是地址,與數(shù)值傳遞不同的是,地址值傳遞的是形參接收實(shí)參地址的復(fù)制值,而不是實(shí)參值本身。另外,地址值傳遞方式中系統(tǒng)不為形式參數(shù)變量分配存儲(chǔ)空間,這一點(diǎn)也與數(shù)值傳遞方式不同。因?yàn)楹瘮?shù)調(diào)用完成數(shù)據(jù)傳遞后,實(shí)參與形參擁有相同的變量地址,它們指向同一變量單元,該變量在主調(diào)函數(shù)定義時(shí)已經(jīng)分配了存儲(chǔ)空間,形參只是接收了它的一個(gè)地址值,并沒(méi)有接收變量本身。根據(jù)參數(shù)類(lèi)型的不同,地址值傳遞方式常見(jiàn)的有如下幾種情況。

  4.2.1 實(shí)參為變量地址,形參為指針

  例題2:

  #include

  void func2( int *x,int *y)

  {

  x=y;

  }

  int main()

  { int a=2,b=3;

  func2(&a,&b);

  printf ("%d,%d",a,b);

  return 0;

  }

  例題2中在主調(diào)函數(shù)中將a,b的地址值傳給了形參指針x和y,在被調(diào)函數(shù)中將y值賦給了x,這時(shí)x的值發(fā)生了改變,x存放的是y的存儲(chǔ)地址,即x指向3,但是這個(gè)指向并不能返回到主調(diào)函數(shù)。因?yàn)檫@個(gè)地址值在函數(shù)調(diào)用結(jié)束后被釋放,其值消失。當(dāng)然,如果想在被調(diào)函數(shù)中修改主調(diào)函數(shù)中實(shí)參變量的值,需要修改指針變量x和y所指向的地址中的內(nèi)容。比如將x=y改為*x=*y,即可達(dá)到修改實(shí)參變量的目的,但是必須清楚,雖然被調(diào)函數(shù)通過(guò)指針可以修改主調(diào)函數(shù)中的值,但這只是一種間接訪問(wèn)數(shù)據(jù)的形式而已,實(shí)參向形參傳遞數(shù)據(jù)的單向性是不變的。

  4.2.2 實(shí)參為數(shù)組名,形參為指針

  在C語(yǔ)言中,數(shù)組名是一個(gè)地址,而且是一個(gè)地址常量,它代表的是該數(shù)組元素的首地址,不是一個(gè)變量。當(dāng)使用數(shù)組名作為實(shí)參時(shí),實(shí)參的值就是數(shù)組的首地址,形參指針接收的也是該數(shù)組的首地址,被調(diào)函數(shù)通過(guò)形參指針的變化來(lái)訪問(wèn)主調(diào)函數(shù)中數(shù)據(jù)。

  例題3:

  #include

  void func3( int *x,int y)

  { int i;

  for(i=0;i printf("%4d",*x++);

  }

  int main()

  { int a[5]={1,2,3,4,5},b=5;

  func3(a,b);

  return 0;

  }

  例題3中形參有兩個(gè),第一個(gè)表示形參接收一個(gè)整型類(lèi)型的地址,第二個(gè)表示接收一個(gè)整型類(lèi)型的數(shù)據(jù),至于實(shí)參是不是一個(gè)指針,是不是一個(gè)整型變量,形式參數(shù)并不理會(huì),只管數(shù)據(jù)的類(lèi)型是否匹配。而從主調(diào)函數(shù)中可以看出,實(shí)參為數(shù)組名(地址)和整型數(shù)據(jù)(整型類(lèi)型),符合參數(shù)傳遞規(guī)則。這樣發(fā)生函數(shù)調(diào)用時(shí),形參指針指向了數(shù)組a的第一個(gè)元素,通過(guò)循環(huán)程序,輸出了數(shù)組a的所有元素。

  這里還有一個(gè)問(wèn)題,形參指針x在被調(diào)函數(shù)中的值發(fā)生了變化,這個(gè)值是不會(huì)返回給實(shí)參的,很明顯,實(shí)參中的第一個(gè)參數(shù)a是數(shù)組名,代表一個(gè)地址常量,肯定不能對(duì)它進(jìn)行賦值操作,這里進(jìn)一步驗(yàn)證了實(shí)參與形參值傳遞是單向性的。

  4.2.3 實(shí)參為數(shù)組名,形參為數(shù)組名

  當(dāng)實(shí)參與形參均為數(shù)組名時(shí),這種方式跟其他的地址值傳遞方式是一樣的,系統(tǒng)也是不給形參數(shù)組分配內(nèi)存空間,而是將形參數(shù)組名處理成一個(gè)指針,因此形參數(shù)組并不存在。當(dāng)發(fā)生函數(shù)調(diào)用時(shí),實(shí)參數(shù)組只是把首地址賦給形參數(shù)組名。這樣形參數(shù)組名也指向?qū)崊?shù)組,兩個(gè)數(shù)組共同占有一段內(nèi)存空間。因此通過(guò)改變形參數(shù)組元素的值來(lái)達(dá)到改變實(shí)參數(shù)組元素的目的。

  例題4:

  #include

  void func4(int b[5])

  {

  b[0]=5;

  b[1]=4;

  b[2]=3;

  b[3]=2;

  b[4]=1;

  }

  int main( )

  {int i;

  int a[5]={1,2,3,4,5};

  func4(a);

  for(i=0;i<5;i++)

  printf("%4d",a[i]);

  return 0;

  }

  例題中實(shí)參與形參均為數(shù)組名,調(diào)用函數(shù)時(shí),實(shí)參數(shù)組的首地址復(fù)制后給了形參數(shù)組,使形參數(shù)組名指向了實(shí)參數(shù)組,當(dāng)改變形參數(shù)組元素值時(shí),實(shí)參元素值必然改變,因?yàn)閷?shí)參數(shù)組和形參數(shù)組是同一塊存儲(chǔ)單元。

  4.2.4 實(shí)參為指針,形參為數(shù)組名

  4.2.5 實(shí)參為指針,形參為指針

  對(duì)于(1),(5)這兩種情況比較好理解,實(shí)參為指針,其值為地址,所以形參接收的也是地址,實(shí)參與形參類(lèi)型匹配,可以進(jìn)行數(shù)據(jù)傳遞,在此不一一介紹。

  C語(yǔ)言函數(shù)常用知識(shí)點(diǎn)

  總體上必須清楚的:

  1)程序結(jié)構(gòu)是三種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)(分支結(jié)構(gòu))、循環(huán)結(jié)構(gòu)。

  2)讀程序都要從main入口,然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇),有且只有一個(gè)main函數(shù)。

  3)計(jì)算機(jī)的數(shù)據(jù)在電腦中保存是以二進(jìn)制的形式.數(shù)據(jù)存放的位置就是他的地址.

  4)bit是位是指為0或者1。 byte是指字節(jié),一個(gè)字節(jié)=八個(gè)位.

  概念常考到的:

  1、編譯預(yù)處理不是C語(yǔ)言的一部分,不占運(yùn)行時(shí)間,不要加分號(hào)。C語(yǔ)言編譯的程序稱(chēng)為源程序,它以ASCII數(shù)值存放在文本文件中。

  2、define PI 3.1415926;這個(gè)寫(xiě)法是錯(cuò)誤的,一定不能出現(xiàn)分號(hào)。 -

  3、每個(gè)C語(yǔ)言程序中main函數(shù)是有且只有一個(gè)。

  4、在函數(shù)中不可以再定義函數(shù)。

  5、算法:可以沒(méi)有輸入,但是一定要有輸出。

  6、break可用于循環(huán)結(jié)構(gòu)和switch語(yǔ)句。

  7、逗號(hào)運(yùn)算符的級(jí)別最低,賦值的級(jí)別倒數(shù)第二。

  第一章C語(yǔ)言的基礎(chǔ)知識(shí)

  第一節(jié)、對(duì)C語(yǔ)言的基礎(chǔ)認(rèn)識(shí)

  1、C語(yǔ)言編寫(xiě)的程序稱(chēng)為源程序,又稱(chēng)為編譯單位。

  2、C語(yǔ)言書(shū)寫(xiě)格式是自由的,每行可以寫(xiě)多個(gè)語(yǔ)句,可以寫(xiě)多行。

  3、一個(gè)C語(yǔ)言程序有且只有一個(gè)main函數(shù),是程序運(yùn)行的起點(diǎn)。

  第二節(jié)、熟悉vc++

  1、VC是軟件,用來(lái)運(yùn)行寫(xiě)的C語(yǔ)言程序。

  2、每個(gè)C語(yǔ)言程序?qū)懲旰螅际窍染幾g,后鏈接,最后運(yùn)行。(.c—.obj—.exe)這個(gè)過(guò)程中注意.c和.obj文件時(shí)無(wú)法運(yùn)行的,只有.exe文件才可以運(yùn)行。(常考!)

  第三節(jié)、標(biāo)識(shí)符

  1、標(biāo)識(shí)符(必考內(nèi)容):

  合法的要求是由字母,數(shù)字,下劃線(xiàn)組成。有其它元素就錯(cuò)了。

  并且第一個(gè)必須為字母或則是下劃線(xiàn)。第一個(gè)為數(shù)字就錯(cuò)了

  2、標(biāo)識(shí)符分為關(guān)鍵字、預(yù)定義標(biāo)識(shí)符、用戶(hù)標(biāo)識(shí)符。

  關(guān)鍵字:不可以作為用戶(hù)標(biāo)識(shí)符號(hào)。main define scanf printf都不是關(guān)鍵字。迷惑你的地方If是可以做為用戶(hù)標(biāo)識(shí)符。因?yàn)镮f中的第一個(gè)字母大寫(xiě)了,所以不是關(guān)鍵字。

  預(yù)定義標(biāo)識(shí)符:背誦define scanf printf include。記住預(yù)定義標(biāo)識(shí)符可以做為用戶(hù)標(biāo)識(shí)符。

  用戶(hù)標(biāo)識(shí)符:基本上每年都考,詳細(xì)請(qǐng)見(jiàn)書(shū)上習(xí)題。

  第四節(jié):進(jìn)制的轉(zhuǎn)換

  十進(jìn)制轉(zhuǎn)換成二進(jìn)制、八進(jìn)制、十六進(jìn)制。

  二進(jìn)制、八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制。

【C語(yǔ)言函數(shù)調(diào)用與參數(shù)傳遞】相關(guān)文章:

C語(yǔ)言函數(shù)參數(shù)傳遞問(wèn)題03-30

C語(yǔ)言函數(shù)參數(shù)傳遞規(guī)律11-19

C語(yǔ)言函數(shù)的運(yùn)用及調(diào)用05-10

C語(yǔ)言函數(shù)的遞歸調(diào)用05-17

關(guān)于淺談C語(yǔ)言函數(shù)調(diào)用參數(shù)壓棧的相關(guān)問(wèn)題05-24

C語(yǔ)言main函數(shù)的參數(shù)07-25

C語(yǔ)言函數(shù)的遞歸和調(diào)用05-09

關(guān)于C語(yǔ)言函數(shù)的遞歸和調(diào)用05-27

C語(yǔ)言中Swift函數(shù)調(diào)用實(shí)例01-17

主站蜘蛛池模板: 前郭尔| 湘乡市| 建瓯市| 新河县| 普洱| 新泰市| 巴楚县| 阳东县| 昆明市| 上高县| 靖远县| 东乡县| 屯昌县| 斗六市| 讷河市| 大新县| 瓮安县| 和林格尔县| 桂林市| 台北市| 盘山县| 衢州市| 中牟县| 湘潭县| 莆田市| 南乐县| 济南市| 德钦县| 白河县| 岗巴县| 安远县| 夹江县| 江孜县| 玉溪市| 独山县| 德化县| 滦南县| 沙田区| 吉木乃县| 紫云| 八宿县|