一、函數形參–指針參數和數組參數的區別
作為函數形參的數組和指針可以互換
這種轉換僅限於函數形參的聲明
這是一種便利,傳遞時數組會蛻變為指針,事實上數組從來沒有傳入過函數。
例子:以下3個聲明是等價的
void putValues(int *);
void putValues(int[]);
void putValues(int[10]);
備注:數組長度不是參數類型的一部分。函數和編譯器都不知道傳統給它的數組的長度的大小。
傳入指定長度數組的一種簡便方法
將參數聲明為數組的引用,此時,數組長度成為形參和實參的一部分。例如:void putValues( int (&arr)[10])
二、默認參數值
默認參數值是一種在大多數情況下都適用的值。
函數聲明可為全部或者部分參數提供默認值。
函數調用的實參按位置解析,默認參數只能用來替換函數調用缺少的尾部實參。
一個參數只能在一個文件裡被指定一次默認實參。函數後續的聲明中可以指定其他默認參數。可以在函數聲明和定義處定義默認參數值。
默認參數可以用任意表達式指定。
例如:
---------------------ff1.h-----------------------------
intff(int a, int b,int c=0);
--------------------ff2.h------------------------------
#include “ff1.h”
intgetValue();
intff(int a, int b =getValue(), c);
--------------------ff2.cpp------------------------------
#include “ff2.h”
intff(int a=0, int b,int c)
{
}