C++笔试题
平时学术必须用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. 引用和指针的区别
★相同点:
●都是地址的概念;
指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。
★不同点:
- ●指针是一个实体,而引用仅是个别名;
- ●引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”;
- ●引用没有const,指针有const,const的指针不可变;(具体指没有int& const a这种形式,而const int& a是有 的, 前者指引用本身即别名不可以改变,这是当然的,所以不需要这种形式,后者指引用所指的值不可以改变)
- ●引用不能为空,指针可以为空;
- ●“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小;
- ●指针和引用的自增(++)运算意义不一样;
- ●引用是类型安全的,而指针不是 (引用比指针多了类型检查
二、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++笔试题的更多相关文章
- 对Thoughtworks的有趣笔试题实践
记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...
- 从阿里巴巴笔试题看Java加载顺序
一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...
- 我设计的ASP.NET笔试题,你会多少呢
本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...
- C#经典笔试题-获取字符串中相同的字符以及其个数
public Dictionary<char,int> GetStrSameAs(string str){ //将字符串转换成一个字符数组. char[] charArray=str.To ...
- flhs笔试题-回家上机实践
这是最近参加的一个公司的笔试题,回家上机写了下代码,希望对有需要的小伙伴有用,简单实现字符串和数组在指定位置的插入: package org.flhs; import com.google.commo ...
- 也许你需要点实用的-Web前端笔试题
之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...
- [c#基础]关于try...catch最常见的笔试题
引言 在翻看之前总结的常见面试题中,关于try...catch异常处理的还是蛮多了,今天看到这个面试题,也就重新学习一下. try..catch语法 try-catch语句由一个try块后跟一个或多个 ...
- js作用域之常见笔试题,运行结果题
笔试题中经常有运行结果题,而大多体型都是围绕作用域展开,下面总结了几种相关的题: 外层的变量函数内部可以找到,函数内部的变量(局部变量)外层找不到. function aaa() { var a = ...
- 【Android】一道Android OpenGL笔试题
一道Android OpenGL笔试题 SkySeraph May. 5th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sky ...
- C/C++ 笔试题
/////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程 ...
随机推荐
- 获取Graphics对象的方法
在做自定义控件时或者GDI+的时候经常会遇到获取Graphics实例的问题.一般有三种获取方式 1.从Paint事件的参数中获取.窗体和许多控件都有一个Paint事件,有一个PaintEventArg ...
- [转]IE8兼容Object.keys
转自:http://blog.sina.com.cn/s/blog_6d63cf160102vbsg.html 只需要加入 var DONT_ENUM = "propertyIsEnumer ...
- .NET 框架程序使用 Win32 API
.NET 框架程序可以通过静态 DLL 入口点的方式来访问本机代码库.DllImport 属性用于指定包含外部方法的实现的dll 位置. DllImport 属性定义如下: na ...
- jquery 跨域访问问题 转
http://zld406504302.iteye.com/blog/1677937 服务器,jsp <%@ page language="java" contentType ...
- 转载:手机网页制作的认识(有关meta标签)
下面是手机网页的一些认识: 一.<meta name="viewport" id="viewport" content="width=devic ...
- 常用的web功能测试方法
功能测试就是对产品各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求功能,即是否满足需求.常用的测试方法如下: 1.页面连接检查:每一个连接是否都有对应的页面,并且页面之间切换正确. ...
- 汽车驱动之家 http://bmw360.cn
汽车驱动之家 http://bmw360.cn
- MYSQL数据库忘记密码
1.忘记密码解决办法 Windows下的实际操作如下 1.关闭正在运行的MySQL. 2.打开DOS窗口,转到mysql\bin目录. 3.输入mysqld --skip-grant-tables回车 ...
- js 简繁体字转换
有些项目需要用到简体和繁体两种字体,在js前台进行转换比较方便而且显示速度没有延时 是一个比较好的解决方案. var _isFT_CS = 0// 简体 var _isFT_CT = 1// 繁体 v ...
- 如何解决前端传来的时间格式与mysql表中时间格式不匹配的查询问题
前端传过来的时间格式为“2016-07-11 11:13:10”,而数据表中对应字段`add_time`的格式为“2016-7-11”,此时sql不能直接用 "where `add_time ...