编程语言:

Q:如果写的函数需要传入一个指针,则是否需要为该指针加上const?把const加在指针不同的位置是否有区别?

A:const是用来声明一个常量的,如果不想让一个值改变就应该加上const。首先来看如下的一段代码:

    int a = 100;
const int *b = &a; // 1
int const *b = &a; // 2
int *const b = &a; // 3
const int *const b = &a; // 4

  区分常量指针和指针常量的一个方法是,看const是在星号的左边还是右边。如果是1与2的形式则是常量指针(指针指向的内容为常量),因为const与放在变量声明符的位置无关,故1与2等价,这种形式 *b 不能变,但 b 能变,即指针指向的内容不能变,但指针的指向能变。如果是3的形式则是指针常量(指针本来就是常量),这种形式*b能变,但b不能变,即指针指向的内容能变,但指针的指向不能变。

Q:如果写的函数需要传入的参数是复杂类型的实例,则传值和传引用有什么区别?什么时候应该为传引用加上const?
A:分为三种情况。

1. 用const修饰函数传入的参数

  对于非内部数据类型,比如一个复杂类的实例,应该是将传值改为传引用,目的是减少拷贝(例如调用拷贝构造函数),提高效率。但是对于内部数据类型,例如int,不能将传值改为传引用,否则不但不能提高效率,反而降低代码的可读性。

2. 用const修饰函数的返回值

  如果以指针类型的方式作为函数的返回值,加上了const,则代表函数返回值(指针)的内容不能被修改,且只能被赋值给加const修饰的同类型指针。当然,用const_cast可以去电const属性。如果以值类型的方式作为函数的返回值,由于返回值会拷贝到临时变量中,故加上了const没什么用。如果以引用类型的方式作为函数的返回值,加上const这种情况并不多,但是在类的赋值号重载时就必须加上const,目的是为了链式表达。

3.用const修饰成员函数

  为了提高代码的健壮性,任何不会修改数据成员的成员函数都应该被修饰为const,且注意const要加在参数列表后面。

数据结构:
1.熟练掌握链表、树、栈、队列和哈希表等数据结构及其相关操作?
答:
2.链表的插入和删除节点如何写?
答:
3.树的6中遍历怎么写?
答:

算法:
1.了解各种查找和排序算法的原理及时间空间复杂度等?
答:
2.重点掌握二分查找,二叉排序树查找?
答:
3.重点掌握插入排序、冒泡排序、归并排序、快速排序?
答:
4.了解动态规划和贪婪算法等原理?
答:

剑指offer 面试题0:扎实的基础:即编程语言、数据结构和算法的更多相关文章

  1. 剑指offer 面试题0:高质的代码:即考虑边界条件、特殊输入和错误处理

    Q:把一个字符串转换为整数. A1:一个普通但漏洞百出的解法. int StrToInt(char* str) { int number = 0; while (*str != 0) { number ...

  2. 剑指Offer:面试题15——链表中倒数第k个结点(java实现)

    问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...

  3. 剑指offer面试题3 二维数组中的查找(c)

    剑指offer面试题三:

  4. 剑指Offer——笔试题+知识点总结

    剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观, ...

  5. C++版 - 剑指offer之面试题37:两个链表的第一个公共结点[LeetCode 160] 解题报告

    剑指offer之面试题37 两个链表的第一个公共结点 提交网址: http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?t ...

  6. C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解

    剑指offer  面试题23:从上往下打印二叉树 参与人数:4853  时间限制:1秒  空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...

  7. C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解

    剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...

  8. Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)

    剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ...

  9. C++版 - 剑指Offer 面试题39:二叉树的深度(高度)(二叉树深度优先遍历dfs的应用) 题解

    剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树 ...

随机推荐

  1. 如何写好PPT,什么样的PPT容易被人理解记住

    PPT一般是用于讲解性的行为而存在,那如果写好PPT呢?如果写好,这个完全要取决于你所面向的目标读者,是用于学术行为呢?还是用于商业行为.面对不同的目标群体,有不同的策略.但是无论面向群体是谁我们都有 ...

  2. mybatis-plus快速入门并使用

    目录 mybatis-plus的初次使用总结 说明:官网自有黄金屋,深入学习看官网是必须的,废话不多说 环境:springboot.mysql 一.配置 pom yml配置数据库 二.代码生成器 生成 ...

  3. Spark-6-如何缓解消除数据倾斜

    1 尽量避免数据源的数据倾斜 比如数据源是Kafka 以Spark Stream通过DirectStream方式读取Kafka数据为例.由于Kafka的每一个Partition对应Spark的一个Ta ...

  4. Spring Boot 简单入门案例

    第一:打开idea 找到spring  Initializr 第二:点击Next 在点击下一步 找到web之后勾选第一个spring web 就完成了 在写一个类 点击运行 结果如下:

  5. DRF使用超链接API实现真正RESTful

    很多API并不是真正的实现了RESTful,而应该叫做RPC (Remote Procedure Call 远程过程调用),Roy Fielding曾经提到了它们的区别,原文如下: I am gett ...

  6. vue原理之-神奇的Object.defineProperty

    vue2.0通过defineProperty进行数据双向绑定 例如:(他接受三个参数,都是必填!) var a= {} Object.defineProperty(a,"b",{ ...

  7. Python之猜拳游戏

    第一次写这东西,主要是为了记录自己的学习历程,或者说是为了忘记的时候找回来看看. 今天是参加风变编程培训第10天.昨天晚上完成了第10关关底的猜拳小游戏. 要求:人和电脑轮流出拳.判断输赢. 给出列表 ...

  8. Mybatis【8】-- Mybatis返回List或者Map以及模糊查询怎么搞?

    使用mybatis的时候,经常发现一个需求,我怎么知道自己是不是增加/修改/删除数据成功了? 好像执行sql之后都没有结果的.其实不是的,增删改的sql执行之后都会有一个int类型的返回值,表示的意思 ...

  9. 道高一丈,且看CWE4.2的新特性

    摘要:CWE在今年2/24发布4.0,首次将硬件安全漏洞纳入了CWE中,6/25发布4.1, 8/20就发布了4.2. 1. 按照惯例,先说故事 我们先说下CWE的幕后老板--MITRE[1]. MI ...

  10. 算法竞赛入门经典第二版第二章习题-(练习Java和C++语法)

    习题2-1水仙花数(daffodil) 输出1000-999中所有的水仙花数.若三位数ABC满足ABC = A3+B3+C3,则称其为水仙花数. Java: package suanfa; publi ...