日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++中函数参数的默认值

發布時間:2025/4/5 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++中函数参数的默认值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1 C++中函數參數的默認值
      • 1.1 C++中函數參數的默認值
      • 1.2 函數默認參數的規則
    • 2 函數占位參數
      • 2.1 函數占位參數
      • 2.2 函數占位參數的意義

1 C++中函數參數的默認值

1.1 C++中函數參數的默認值

對于C++中函數參數的默認值:

  • 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; }/* 第一種情況:當聲明和定義的默認值不同時error: default argument given for parameter 1 of ‘void fun(int)’ error: after previous specification in ‘void fun(int)’void fun(int x = 555);*//* 第二種情況:當聲明中無默認值,而定義中有默認值 此時調用函數必須按相應參數進行傳參,否則會報錯。并且定義時的默認值并不會起作用,這是種沒有意義的做法,雖然編譯通過了。*//* 第三種情況:聲明和定義時均給出了默認值,則直接編譯錯誤。 */

1.2 函數默認參數的規則

函數默認參數的規則:

  • 參數的默認值必須從右向左提供,設計函數時使用什么樣的默認值;
  • 函數調用時使用了默認值,則后續參數必須使用默認值,即參數調用時參數匹配從左到右。

編程實驗:默認參數的錯誤示例

#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; }/* 不正確聲明 default argument missing for parameter 2 of ‘void fun(int, int, int)’void fun(int x = 555, int y, int z = 12); */

2 函數占位參數

2.1 函數占位參數

函數占位參數:

  • 在C++中可以為函數提供占位參數。
  • 占位參數只有參數類型聲明,而沒有參數名聲明。
  • 一般情況下,在函數體內部無法使用占位參數。

2.2 函數占位參數的意義

主要意義如下:

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

問題:下面的兩種聲明方式等價嗎?
void fun(); <-> void fun(void);
(C語言中不等價,不寫void意味著接收任意的參數,寫void意味著不接收任何參數;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; }

示例代碼:占位符與默認參數結合起來使用

#include<stdio.h>void fun(int = 0, int = 0);int main(void) {fun(1,2);fun();return 0; }void fun(int, int) {}

參考資料:

  • C++深度解析教程
  • 總結

    以上是生活随笔為你收集整理的C++中函数参数的默认值的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。