标签:方便 实现 试题 对象 博客 形参 处理 end 限制
该笔试题是借鉴其他博客的内容,记录下来后面方便自己阅读复习的
一.const有什么用途:
三点:
1.修饰变量,定义只读变量
2.修饰函数参数或函数返回值
3.修饰类的成员函数,该成员函数不可修改成员变量的值。
二.指针和引用的差别
参考链接:
http://www.cnblogs.com/dolphin0520/archive/2011/04/03/2004869.html
http://www.cnblogs.com/hoodlum1980/archive/2012/06/19/2554270.html
http://c.biancheng.net/cpp/biancheng/view/169.html
1.引用是变量的别名,内部实现是只读指针,C++中引用是编译器通过指针实现的,但这个实现在语言层面对程序员做了透明化处理。
指针则本身就是一个对象,允许对指针赋值和拷贝
2.引用只能在初始化的时候被赋值,其他时候不能改变,指针没有此限制
3.引用不能为NULL,指针可以为NULL
4.指针可以有多级,而引用只能是一级
5.sizeof引用得到的是所指向变量的大小,而sizeof指针得到的是指针本身的大小
6.指针作为函数参数传递时是将实参的拷贝传递给形参,如以下程序(a);引用作为函数参数传递时传递的是实参本身而不是拷贝,引用是真正的共享同一内存单元。
程序(a):
#include <iostream>
#include <stdlib.h>
#include "stdafx.h"
using namespace std;
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
int c = 10;
a = &c;
cout << "swap函数中" << endl;
cout << "a的地址为" << *a << " " << "a的值为" << a << endl;
}
int main()
{
void swap(int *a, int *b);
int a = 4;
int b = 5;
cout << "更改前" << endl;
cout << "a的地址为" << &a << " " << "a的值为" << a << endl;
cout << "b的地址为" << &b << " " << "b的值为" << b << endl;
swap(&a, &b);
cout << "更改后"<< endl;
cout << "a的地址为" << &a << " " << "a的值为" << a << endl;
cout << "b的地址为" << &b << " " << "b的值为" << b << endl;
return 0;
}
得到的结果如下:
实际上指针a作为函数实参的时候,相当于生成了一个新的指针XXX,只是这个指针XXX指向的地址和实参指针a的地址一样而已。因此函数中把变量C的地址赋给指针a的时候,实际上是更改指针XXX的地址,所以函数中a = &c;这个操作根本不会影响到真正的指针a。
标签:方便 实现 试题 对象 博客 形参 处理 end 限制
原文地址:https://www.cnblogs.com/hzjcode/p/9206739.html