#include<iostream> #include<string> using namespace std; //使用数组名时,编译器自动会将数组名转成指向第一个元素的指针 //如果形参是数组的引用,编译器不会将数组形参转化为指针 // int &arr[10] //arr is an array of reference //int (&arr)[10]//arr is a reference to an array of 10 ints void print(const int ia[10]){ for(size_t i=0;i!=10;i++) cout<<ia[i]<<endl; } void print1(const int (&ia)[10]){ for(size_t i=0;i!=10;i++) cout<<ia[i]<<endl; } int main(){ int ia[5]={1,2,3,4,5}; //print(ia);//可以通过编译,运行结果不确定 //print1(ia);//通不过编译 int ib[10]={1,2,3}; print(ib); print1(ib); int i; cin>>i; return 0; }
int *matrix[10] //array of 10 pointers
int (*matrix)[10] //pointer to an array of 10 ints
VS2008中如何给main函数传递参数呢?
在当前项目下右键选择properties->Debugging右边出现Command arguments,argc参数编译器会自动生成,argv[0]也不用自己加,编译器默认,其余参数自己添加,中间用空格隔开,比如我输入的是"green" "red" "blue" "white",则argc值为5
int main(int argc ,char *argv[]){
int res=argc;
string s[5];
for(int i=0;i<5;i++){
s[i]=argv[i];
cout<<s[i]<<endl;
}
}
//在形参表后面的const代表是个const member function
//const成员函数
//const改变了隐含的this形参的类型
//this限定为指向const对象的指针
如
class Sales_item{
public:
double avg_price()const;
}
重载函数是具有相同的名字而形参表不同
注:如果只是返回值不同,而名字形参表相同时不能成为重载函数的,编译的时候也通不过
函数指针指指向函数而非指向对象的指针
函数指针也指向某个特定的类型,函数类型由其返回类型以及形参表确定,与函数名无关。
bool (*pf) (const string &,const string &)
这里*pf两侧的括号不能掉,否则变成该函数返回的是bool *类型,而不是代表pf是一个函数指针