數組形參
數組的兩個特殊性質1不允許拷貝數組,2使用數組時會將其轉換成指針
我們可以把形參寫成類似數組的形式
//儘管形式不同,但是這三個函數是等價的,,形參完全一樣 const int *
void print(const int *)
void print(const int [])//函數的意圖是作用一個數組
void print(const int [10])//這裏的維度表示我們期望數組含有多少個元素,實際不一定
管理數組的方法
1 處理C風格字符串,遇空字符時停止
void print(const char *cp)
{
if(cp)//若cp不是一個空指針
{
while(*cp)//只要cp指針所指的字符不是空字符
{
cout << *cp++ << ' ';
}
}
}
2 使用標準庫
void print(const int *beg, const int *end)
{
while(beg != end)
{
cout << *beg++;
}
}
調用這個函數我們要傳入兩個指針,一個指向首元素,一個指向尾元素
int j[] = {0, 1};
print(begin(j), end(j));//begin和end函數返回兩個指着,分別指向首元素和尾元素的下一個位置
3 顯式傳遞一個表示數組大小的形參
//const int ia[] 等價於 const int *ia
//size表示處理數組的大小,將它顯式的傳給函數節控制對ia元素的訪問
void print(const int ia[], size_t size)
{
for(size_t i=0; i != size; ++i)
{
cout << ia[i];
}
}
print(j, end(j)-begin(j))
數組引用形參
傳遞多維數組
引用返回左值
返回數組指針
聲明一個返回數組指針的函數
main:處理命令行選項
#include <iostream>
#include <string>
int main(int argc, char *argv[])
{
if (argc > 2) {
std::string str = argv[1];
str += argv[2];
std::cout << str << std::endl;
} else {
std::cout << "error" << std::endl;
}
return 0;
}
#include <iostream>
#include <string>
int main(int argc, char *argv[])
{
for (int i=0; i<argc; i++) {
std::cout << i+1 << "," << argv[i] << std::endl;
}
return 0;
}