C++ 编程若干知识点

2014.3.31

默认参数:

1,函数编写时给一个默认参数,调用时有参数则使用传入的参数,无参数则使用默认参数。

2,默认值可以是全局变量、全局常量,甚至是一个函数。但不可以是局部变量。因为默认参数的调用是在编译时确定的,而局部变量位置与默认值在编译时无法确定。

3,默认参数必须放在最右边,默认参数右边必须为默认参数。

4,为了不引起混淆,编译器不允许默认参数与重载函数有交叉情况。如func(int a)和 func(int a, int b = 1)

5,默认参数只可以申明一次,当有函数声明时必须在函数声明内声明,无函数声明时才在函数定义中声明。


2014.4.1

常量指针和指针常量有什么区别:

int a;
int * const p = &a //指针常量,*p可以修改*p = 8;(OK),p不可以修改 p++(ERROR)。
int a,b;
const int *p = &a;//常量指针 *p不可修改 *p = 8;(ERROR),p 可以修改 p = &b (OK)。
还有一种,const int * const p = &a; // *p 和 p均不可改变了。

回答关键要看const修饰的是谁,int const const int的写法是一样的,指针的话看const离谁( 是‘*’ 还是‘指针变量名’)比较近就是修饰谁的,比如,* const 变量名 表示变量名是常量 也就是p不可变 (暗示*p可变,const没有修饰‘*“),const * 表示带*运算对象的是常量,也就是*p 不可变 (暗示p可变,p不带‘*’ )。


C++引用和指针的却别(&和*)

引用访问一个变量是直接访问,而指针是间接访问。
引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间。
引用在开始的时候就绑定到了一个内存空间(开始必须赋初值),所以他只能是这个。
内存空间的名字,而不能改成其他的,当然可以改变这个内存空间的值。
例如int i = 3,j = 4;
int &x = i;//成为i的别名
x = j;//不能否认x仍然引用i,并没有成为j的别名,只是修改了x和j共享的内存空间的值.这点与指针不同,指针在任何时刻都可以改变自己的指向

你可能感兴趣的:(C++ 编程若干知识点)