码迷,mamicode.com
首页 > 编程语言 > 详细

C++笔试-1,基础理论

时间:2018-06-21 01:40:18      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:方便   实现   试题   对象   博客   形参   处理   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。

 

C++笔试-1,基础理论

标签:方便   实现   试题   对象   博客   形参   处理   end   限制   

原文地址:https://www.cnblogs.com/hzjcode/p/9206739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!