看很多书上写&array[n]代表第n个元素的地址。其实指的是第n+1个元素的地址吧。
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int array[]={1,2,3,4};
int *p=&array[3];
cout<<*p<<endl;
system("pause");
return 0;
}
这输出的是4!不知道如何解释,可能自己对第n个元素的地址理解有误!
const int ia[]等价于const int* ia;
我们在传递形参与实参的时候,都可以让两个等价!
#include <iostream>
using namespace std;
void print(const int ia[5])
{
for(size_t i=0;i !=5;i++)
cout<<ia[i]<<endl;
}
int main(void)
{
const int pia[5]={1,2,3,4,5};
print(pia);
return 0;
}
重载首先查找名字,名字一样则在局部作用域内隐藏外层的同名函数的重载。 //mark一下
main函数中 int main(int argc,char *argv[])
{}
第二个形参argv是一个数组,第二个形式是数组,所以也可以写成int main(int argc,char** argv){}
argc代表数组中字符串的数量。数组第一个为执行的可执行文件名。
牢记当我们将decltype作用于某个函数时,它返回函数类型而非指针类型。因此,我们显式的加上*以表明我们需要返回指针,而非函数本身。
decltype(sumLength)*getFun(const string &);//表明getFun函数返回的是前面那函数返回类型的指针。
typedef decltype(lengthCompare) *FuncP2;//前面加上指针,表示结果得到的是前面函数的返回类型加指针。
void useBigger(const string&,constructionstring&,FuncP2);最后那个是一个指针,因为前面的申明!