日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++詳細分析講解函數參數的擴展_C 語言

作者:清風自在?流水潺潺 ? 更新時間: 2022-06-19 編程語言

一、函數參數的默認值

  • C++ 中可以在函數聲明時為參數提供一個默認值
  • 當函數調用時沒有提供參數的值,則使用默認值
  • 參數的默認值必須在函數聲明中指定

下面看一段代碼:

#include <stdio.h>
int mul(int x = 0);
int main(int argc, char *argv[])
{
    printf("%d\n", mul());
    printf("%d\n", mul(-1));
    printf("%d\n", mul(2));
    return 0;
}
int mul(int x)
{
    return x * x;
}

下面分別是該程序在 C++ 和 C語言環境下的編譯結果:

在 C++ 編譯環境下程序能夠編譯通過,而在 C 語言條件下就不行,這就說明了函數參數的默認值是 C++ 語言對 C語言的一個擴展。且函數參數的默認值在定義時不會報錯,如果放在函數申明時會報錯。

函數默認參數的規則

  • 參數的默認值必須從右向左提供
  • 函數調用時使用了默認值,則后續參數必須使用默認值

如下所示:

下面看一段代碼感受一下:

#include <stdio.h>
int add(int x, int y = 0, int z = 0);
int main(int argc, char *argv[])
{
    printf("%d\n", add(1));
    printf("%d\n", add(1, 2));
    printf("%d\n", add(1, 2, 3));
    return 0;
}
int add(int x, int y, int z)
{
    return x + y + z;
}

下面為輸出結果:

二、函數占位參數

在 C++ 中可以為函數提供占位參數

  • 占位參數只有參數類型聲明,而沒有參數名聲明
  • 一般情況下,在函|數體內部無法使用占位參數

也就是說,下面這種表示方法在 C++ 中是沒有問題的:

函數占位參數的意義

  • 占位參數與默認參數結合起來使用
  • 兼容C語言程序中可能出現的不規范寫法

就比如說,下面這兩種表示方式,在 C++ 中表示相同的意思,表示沒有參數輸入;而在C 語言中前者表示可輸入參數個數不受限制,而后者表示沒有參數輸入

下面看一段代碼:

#include <stdio.h>
int func(int x, int = 0);
int main(int argc, char *argv[])
{
    printf("%d\n", func(1));
    printf("%d\n", func(2, 3));
    return 0;
}
int func(int x, int)
{
    return x;
}

下面為改代碼在C++和C語言兩種編譯條件下的輸出結果:

三、小結

  • C++ 中支持函數參數的默認值
  • 如果函數調用時沒有提供參數值,則使用默認值
  • 參數的默認值必須從右向左提供
  • 函數調用時使用了默認值,則后續參數必須使用默認值
  • C++ 中支持占位參數,用于兼容C語言中的不規范寫法

原文鏈接:https://blog.csdn.net/weixin_43129713/article/details/122625173

欄目分類
最近更新