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

C語言函數(shù)參數(shù)詳解之實(shí)際參數(shù)(實(shí)參)&形式參數(shù)(形參)詳解

 更新時間:2025年09月12日 15:00:16   作者:YIN_尹  
本文給大家講解C語言函數(shù)參數(shù)詳解之實(shí)際參數(shù)(實(shí)參)&形式參數(shù)(形參)的相關(guān)知識,包括基礎(chǔ)概念和示例代碼,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

這篇文章我們一起學(xué)習(xí)一下函數(shù)的參數(shù),函數(shù)的參數(shù)分為實(shí)參和形參。

一.什么是實(shí)際參數(shù)(實(shí)參)

首先我們來學(xué)習(xí)實(shí)參,什么是實(shí)參呢?

實(shí)際參數(shù)簡稱“實(shí)參”。

在調(diào)用有參函數(shù)時,函數(shù)名后面括號中的參數(shù)稱為“實(shí)參”,是我們真實(shí)傳給函數(shù)的參數(shù),實(shí)參可以是:常量、變量、表達(dá)式、函數(shù)等。
無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時,它們都必須有確定的值,以便把這些值傳送給形參。

下面我們寫個代碼來幫助大家理解:

#include <stdio.h>
int add(int x, int y)
{
	return x + y;
}
int main()
{
	int a = 20;
	int b = 30;
	int ret1 = add(20, 30);
	printf("%d\n", ret1);
	int ret2 = add(a, b);
	printf("%d\n", ret2);
	int ret3 = add(a + b, a - b);
	printf("%d\n", ret3);
	int ret4 = add(add(2, 3), 5);
	printf("%d\n", ret4);
	return 0;
}

無論實(shí)參是何種類型的量,它們都必須有確定的值

二.什么是形式參數(shù)(形參)

那什么是形式參數(shù)呢?

形式參數(shù)是指函數(shù)名后括號中的變量,因?yàn)樾问絽?shù)只有在函數(shù)被調(diào)用的過程中才實(shí)例化(分配內(nèi)存單元),所以叫形式參數(shù)。
形式參數(shù)當(dāng)函數(shù)調(diào)用完成之后就自動銷毀了。因此形式參數(shù)只在函數(shù)中有效。

還來看上面的代碼:

#include <stdio.h>
int add(int x, int y)
{
	return x + y;
}
int main()
{
	int a = 20;
	int b = 30;
	//printf("%d %d", x, y);
	int ret1 = add(20, 30);
	printf("%d\n", ret1);
	int ret2 = add(a, b);
	printf("%d\n", ret2);
	int ret3 = add(a + b, a - b);
	printf("%d\n", ret3);
	int ret4 = add(add(2, 3), 5);
	printf("%d\n", ret4);
	return 0;
}

1.形參只在函數(shù)中有效:

我們?nèi)绻诤瘮?shù)外部使用函數(shù)形參,這是不可行的。

2.形參在函數(shù)調(diào)用過程中才實(shí)例化(分配內(nèi)存單元)

函數(shù)調(diào)用之前,形參還未創(chuàng)建

函數(shù)調(diào)用過程中,形參才被實(shí)例化

函數(shù)調(diào)用結(jié)束,形參生命周期結(jié)束,被銷毀

三.形參與實(shí)參的關(guān)系

了解了什么是函數(shù)的形參和實(shí)參,那兩者之間有什么關(guān)系呢?

他們的關(guān)系是:

形參實(shí)例化之后其實(shí)相當(dāng)于實(shí)參的一份臨時拷貝。

這里我們對函數(shù)的實(shí)參和形參進(jìn)行分析:

我們來嘗試寫一個函數(shù)交換兩個整形變量的內(nèi)容。

#include <stdio.h>
//實(shí)現(xiàn)成函數(shù),但是不能完成任務(wù)
void Swap1(int x, int y) {
	int tmp = 0;
	tmp = x;
	x = y;
	y = tmp;
}
int main()
{
	int num1 = 1;
	int num2 = 2;
	Swap1(num1, num2);
	printf("Swap1::num1 = %d num2 = %d\n", num1, num2);
	return 0;
}

函數(shù)swap1用x,y接收了num1,num2,并把x,y進(jìn)行了交換,但是我們打印出來的num1,num2并沒有交換,為啥呢?

這是因?yàn)樵诤瘮?shù)調(diào)用時,形參x,y是實(shí)參num1,num2的一份臨時拷貝,形參和實(shí)參并沒有建立真正意義上的聯(lián)系,形參x,y是兩個獨(dú)立的變量,和實(shí)參num1,num2分別占用不同的內(nèi)存空間,在這里,形參和實(shí)參只是數(shù)值相同罷了.

所以,交換形參x,y,并不會對實(shí)參num1,num2產(chǎn)生影響?。?!

在這里,我們?nèi)绻胍_(dá)到交換實(shí)參的目的,需要進(jìn)行傳址調(diào)用,這個后面我們會詳細(xì)給大家講解,現(xiàn)在可以先簡單了解一下:

所謂傳址,就是num1,num2的地址作為參數(shù)傳過去,當(dāng)然我們就需要兩個整形指針去接收,然后,我們在函數(shù)內(nèi)部,就可以通過這兩個指針找到num1,num2,對它們進(jìn)行交換.

接下來,我們就用傳址調(diào)用的方法來實(shí)現(xiàn)一下函數(shù):

#include <stdio.h>
//正確的版本
void Swap2(int* px, int* py) {
	int tmp = 0;
	tmp = *px;
	*px = *py;
	*py = tmp;
}
int main()
{
	int num1 = 1;
	int num2 = 2;
	Swap2(&num1, &num2);
	printf("Swap2::num1 = %d num2 = %d\n", num1, num2);
	return 0;
}

這次,我們就真正達(dá)到了交換num1,num2的目的

總之,我們最后得到的結(jié)論就是,函數(shù)實(shí)參與形參的關(guān)系就是:

形參實(shí)例化之后其實(shí)相當(dāng)于實(shí)參的一份臨時拷貝。

以上就是對函數(shù)參數(shù)的介紹,歡迎大家指正?。。?/p>

到此這篇關(guān)于C語言函數(shù)參數(shù)詳解之實(shí)際參數(shù)(實(shí)參)&amp;形式參數(shù)(形參)詳解的文章就介紹到這了,更多相關(guān)C語言實(shí)際參數(shù)與形式參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Qt圖形圖像開發(fā)之曲線圖表模塊QChart庫讀取/設(shè)置X軸的顯示區(qū)間

    Qt圖形圖像開發(fā)之曲線圖表模塊QChart庫讀取/設(shè)置X軸的顯示區(qū)間

    這篇文章主要介紹了Qt圖形圖像開發(fā)之曲線圖表模塊QChart庫讀取/設(shè)置X軸的顯示區(qū)間,需要的朋友可以參考下
    2020-03-03
  • C++中實(shí)現(xiàn)fibonacci數(shù)列的幾種方法

    C++中實(shí)現(xiàn)fibonacci數(shù)列的幾種方法

    本文主要介紹了C++中實(shí)現(xiàn)fibonacci數(shù)列的幾種方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言中字符串常用函數(shù)strcat與strcpy的用法介紹

    C語言中字符串常用函數(shù)strcat與strcpy的用法介紹

    以下是對C語言中字符串常用函數(shù)strcat與strcpy的使用方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07
  • C++超詳細(xì)講解隱藏私有屬性和方法的兩種實(shí)現(xiàn)方式

    C++超詳細(xì)講解隱藏私有屬性和方法的兩種實(shí)現(xiàn)方式

    為了避免因?yàn)閷㈩悗熘械乃接谐蓡T開放給類的使用方而導(dǎo)致的軟件邏輯外泄,因此需要將對外代碼中的私有成員隱藏起來,下面我們來了解一下隱藏私有屬性和方法的兩種實(shí)現(xiàn)方式
    2022-05-05
  • C++ STL入門教程(6) set(集合)的使用方法

    C++ STL入門教程(6) set(集合)的使用方法

    這篇文章主要為大家詳細(xì)介紹了C++ STL入門教程的第六篇,set集合的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C語言實(shí)現(xiàn)飛機(jī)游戲(進(jìn)階版)的示例代碼

    C語言實(shí)現(xiàn)飛機(jī)游戲(進(jìn)階版)的示例代碼

    在前文中,已經(jīng)帶大家利用C語言實(shí)現(xiàn)了簡單的飛機(jī)游戲,但它還存在一些缺陷。因此,本文將給大家?guī)磉M(jìn)階版的飛機(jī)游戲,需要的可以參考一下
    2022-10-10
  • 詳解C++ STL中vector擴(kuò)容機(jī)制

    詳解C++ STL中vector擴(kuò)容機(jī)制

    vector是表示可以改變大小的數(shù)組的序列容器,就像數(shù)組一樣,vector對其元素使用連續(xù)的存儲位置,這篇文章將給大家詳細(xì)介紹C++ STL中vector擴(kuò)容機(jī)制,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • C語言實(shí)現(xiàn)簡易通訊錄

    C語言實(shí)現(xiàn)簡易通訊錄

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡易通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C++ 深入淺出探索模板

    C++ 深入淺出探索模板

    人們需要編寫多個形式和功能都相似的函數(shù),因此有了函數(shù)模板來減少重復(fù)勞動;人們也需要編寫多個形式和功能都相似的類,于是 C++ 引人了類模板的概念,編譯器從類模板可以自動生成多個類,避免了程序員的重復(fù)勞動
    2022-04-04
  • C++中的解釋器模式實(shí)例詳解

    C++中的解釋器模式實(shí)例詳解

    這篇文章總結(jié)了C++標(biāo)準(zhǔn)庫中的算法分類,還介紹了sort和stable_sort的區(qū)別,以及remove和erase的結(jié)合使用,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-11-11

最新評論

溧阳市| 邵阳市| 台北市| 柳江县| 同德县| 兰西县| 霍林郭勒市| 苗栗市| 比如县| 革吉县| 兰坪| 土默特左旗| 理塘县| 桃江县| 日照市| 响水县| 板桥市| 五华县| 井陉县| 桑植县| 嘉祥县| 武宁县| 防城港市| 新丰县| 河津市| 临湘市| 祁东县| 临邑县| 磐安县| 上虞市| 汕头市| 安义县| 九江县| 扎赉特旗| 资溪县| 洞头县| 大连市| 巢湖市| 宁晋县| 历史| 区。|