平时学术必须用Python多啊,但校招笔试绕不开语言基础,非cs科班小弱临阵整理些C++题备考。很弱很苦逼。。。

一、指针

1.二维数组指针

#include<stdio.h>
int main(int args,char ** argv)
{
int map[][]={
{,,},
{,,},
{,,}
}; int **pMap=(int **)map; printf("%d\n",map);//数组的首地址
printf("%d\n",*(map+));//数组第二行首地址
printf("%d\n",*map+);//数组首行的第二列地址
printf("%d\n",**(map+));//第二行第一列数值
printf("%d\n",*(*(map+)+));//第二行二列数值
printf("%d\n",*(map+)+);//第二行二列地址
printf("%d\n",pMap[]);//数组中的第5个数
printf("%d\n",&pMap[]);//数组中的第4个数的地址 return ;
}

2. 引用和指针的区别

★相同点:

●都是地址的概念;

指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。

★不同点:

  1. 指针是一个实体,而引用仅是个别名;
  2. ●引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”;
  3. ●引用没有const,指针有const,const的指针不可变;(具体指没有int& const a这种形式,而const int& a是有     的,  前者指引用本身即别名不可以改变,这是当然的,所以不需要这种形式,后者指引用所指的值不可以改变)
  4. ●引用不能为空,指针可以为空;
  5. ●“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小;
  6. 指针和引用的自增(++)运算意义不一样;
  7. ●引用是类型安全的,而指针不是 (引用比指针多了类型检查

二、sizeof

1.常规
char str1[] = “Hello” ;
char str2[5] = {'H','e','l','l','o'};
char str3[6] = {'H','e','l','l','o','/0'};
char   *p1 = "Hello";
char *p2[]={"hello","world"};
int     n = 10;
int    *q = &n;

sizeof (str1 ) = 6    (自动加了'/0')  
strlen (str1 ) = 5    (字符串的长度)  
sizeof (str2 ) = 5     (字符数组的大小)
strlen (str2) = 未知 (该字符串缺少结束符'/0')
sizeof (str3) = 6     (字符数组的大小)
strlen (str3) = 5    (该字符串的长度为5)
sizeof ( p1 ) =   4    (p1是一个指针,大小为4)
sizeof ( p2 ) =   8    (p2是长度为2的字符串数组)
sizeof ( n ) =   4    (整型大小为4)
sizeof ( q ) =   4    (q是一个指针,大小为4)

2.动态分配内存
int *p = (int *)malloc( 100 );
sizeof ( p ) = 4      (p是一个指针,大小为4)

3.函数参数
void Function1( char p[],int num ){
    sizeof ( p ) = 4 (数组在做为函数参数时均化为指针)
}
void Function2( int p[],int num ){
    sizeof ( p ) = 4 (数组在做为函数参数时均化为指针)
}

三、类和对象

四. static

1.static关键字,static全局变量与普通全局变量的区别,static局部变量与普通变量的区别,static函数与普通函数的区别

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

五. const

在C中,const主要用来修饰变量、函数参数。 const作用于变量时,表示该变量具有不可改变的属性。当然,由这个属性,我们就可以清楚地知道为什么const变量要在定义的时候初始化,因为,const变量一旦定义之后,就不能改变(当然,这不是绝对的)。 很经典的例子是const修饰指针,int a = 3; const int * p = &a; int const *p = &a; int * const p = &a; const int * const p = &a; 一个区分const到底是修饰指针本身,还是修饰所指向的内容的简单的方法是看const位于*号的前还是后。如果const位于*号前,则修饰指针指向的内容;如果位于*号后,则修饰指针。由const的本质属性,我们就可以很容易地知道,const位于*号前,表示指针指向的内容不能修改,const 位于*号后,表示指针本身不能修改。如果有两个const,则表示指针指向的内容和指针本身均不能修改。 const作用于函数参数时,由const的本质属性,我们很容易清楚该函数不能改变这个参数。当然,常用的是const指针作参数。 在C中,const的用法主要就是上面两点。

在C++中,除了C中的用法外,还有以下一些用法。 const作用于类的成员,包括成员变量和成员函数。 const作用于成员变量时,我们同样可以根据const的不可修改属性,推论出该成员变量不可被改变。这就引出一个问题,const成员变量如何初始化?解决方法就是构造函数的初始化列表。我们知道,C++中,一般通过成员函数来访问成员变量的,而一般的成员函数是可以改变成员变量的值的,又因为const成员变量是不可以修改的,所以,我们就明白了为什么非const成员函数不能访问const成员变量了。 const作用于成员函数时,那么我们就可以推断出该函数不能修改成员变量的值,包括const成员变量和非const成员变量。当然,我们还可以得出const成员函数不可以调用非const成员函数,原因很简单,非const成员函数可以修改成员变量。

const作用于类的对象、指针或引用时,我们依然可以利用const的不可修改属性,推断出const对象、指针或引用是不可以修改内部的成员变量的,因此,我们就可以得出const对象、指针或引用不能调用非const成员函数的结论了

四、虚函数

C++笔试题的更多相关文章

  1. 对Thoughtworks的有趣笔试题实践

    记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...

  2. 从阿里巴巴笔试题看Java加载顺序

    一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...

  3. 我设计的ASP.NET笔试题,你会多少呢

    本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...

  4. C#经典笔试题-获取字符串中相同的字符以及其个数

    public Dictionary<char,int> GetStrSameAs(string str){ //将字符串转换成一个字符数组. char[] charArray=str.To ...

  5. flhs笔试题-回家上机实践

    这是最近参加的一个公司的笔试题,回家上机写了下代码,希望对有需要的小伙伴有用,简单实现字符串和数组在指定位置的插入: package org.flhs; import com.google.commo ...

  6. 也许你需要点实用的-Web前端笔试题

    之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...

  7. [c#基础]关于try...catch最常见的笔试题

    引言 在翻看之前总结的常见面试题中,关于try...catch异常处理的还是蛮多了,今天看到这个面试题,也就重新学习一下. try..catch语法 try-catch语句由一个try块后跟一个或多个 ...

  8. js作用域之常见笔试题,运行结果题

    笔试题中经常有运行结果题,而大多体型都是围绕作用域展开,下面总结了几种相关的题: 外层的变量函数内部可以找到,函数内部的变量(局部变量)外层找不到. function aaa() { var a = ...

  9. 【Android】一道Android OpenGL笔试题

    一道Android OpenGL笔试题 SkySeraph May. 5th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sky ...

  10. C/C++ 笔试题

    /////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程 ...

随机推荐

  1. Sql Server如何新建计划任务

    打开Sql Server数据库,在管理中找到维护计划功能,右击维护计划选择维护计划向导.如图所示: 打开维护计划向导后,在第一个步骤下输入计划名称. 输入完计划名称后,点击右下角的更改按钮,这里是配置 ...

  2. 张艾迪(创始人): 整合全新的UIW.AD概念

    The World No.1 Girl :Eidyzhang The World No.1 Internet Girl :Eidyzhang AOOOiA.global Founder :Eidyzh ...

  3. 新手使用django-pagination分页

    首先使用pip instal pagination 即可完成安装. (pycharm里就是安装个django-pagination外包) 完成后配置如下: 1. 将安装文件中的 pagination ...

  4. oracle dbms_JOB

    添加一个任务,怎么老是报错 [SQL] DECLARE job1 number; begin dbms_job.submit(job1,'RESTUDY_SCORE_IMPORT',sysdate,' ...

  5. EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(七)

    前言 上一篇文章我们完成了系统角色管理的基本功能实现,也对系统层次结构进行了了解.这一篇我们将继续对系统的用户管理模块进行代码编写.代码没有做封装,所以大部分的逻辑代码都是相通的,只是在一些前端的细节 ...

  6. iis里面浏览网页,提示找不到应用程序的解决办法

    iis配置成功,数据库链接正确,代码无误,在iis里面,浏览某网页,提示找不到应用程序,这时一下子懵了. 处理办法:在浏览器中直接输入网址,例如:http://192.168.1.111,这时能够打开 ...

  7. java中调用xml的方法:DocumentBuilderFactory

    具体的使用方法如下: (1)得到 DOM 解析器的工厂实例 DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance(); (2 ...

  8. LNAMP服务器环境搭建(手动编译安装)

    LNAMP服务器环境搭建(手动编译安装) 一.准备材料 阿里云主机一台,操作系统CentOS 6.5 64位 lnamp.zip包(包含搭建环境所需要的所有软件) http://123.56.144. ...

  9. spark发行版笔记9

    感谢DT大数据梦工厂支持提供技术支持,DT大数据梦工厂专注于Spark发行版定制. 本期概览: 1 Receiver生命全周期 首先,我们找到数据来源的入口,入口如下 Receiver的设计是极其巧妙 ...

  10. AAS代码运行-第11章-2

    hdfs dfs -ls /user/littlesuccess/AdvancedAnalysisWithSparkhdfs dfs -mkdir /user/littlesuccess/Advanc ...