[C++ 面试基础知识总结] 变量和基本类型
原因是在C++中,以0开头的整数表示八进制数,以0x或0X开头的代表十六进制数,八进制中的10等于十进制中的8。
变量初始化的4种形式以上4条语句都可以将x初始化等于0,其中使用了花括号的两种形式是C++ 11的新特性,被称为列表初始化,在为对象赋新值时也可以采取同样的办法。列表初始化形式的一个重要特点是,初始值存在丢失信息风险的时候,编译器会报错:
在main()函数外定义的i为全局变量,拥有全局作用域,声明之后在整个程序范围内可用。而在main()函数中定义的i为局部变量,拥有块作用域,只在main()函数内可用。在内层作用域中新建局部变量i会覆盖全局变量i,所以j的值为局部变量i的值100,而采用::i的方式可以显示地访问全局变量i,所以k的值为全局变量i的值40。
引用与指针和*的多重含义:
int i = 0; // 是声明的一部分,r是一个指向i的引用(改变r的值也会改变i的值) int r = i; // *是声明的一部分,p是一个未初始化的指针 int *p; // 是一个取地址符,将i的地址赋给p,即p为指向i的指针 // *是一个解引用符,将p指向的变量的值赋为1 *p = 1; // 是声明的一部分,*是解引用符,r2是一个指向指针p指向的变量的引用 int r2 = *p;
复合类型
const定义的对象为常量,任何试图对常量进行赋值的行为都会报错,由于const对象定义后就不能修改,所以必须初始化。
// 正确,可以用常量引用指向一个非常量对象,但不能通过修改r3的值来修改i的值 const int r3 = i; // 正确,常量引用可以绑定到一个普通int对象上 const int r4 = 0; // 错误,非常量引用不能绑定到一个普通int对象上 int r5 = 0;
// p3为指向常量的常量指针,一直指向j,且不能用p3去修改j的值 const int *const p3 =
修饰指针的const为顶层const,而修饰指针或引用指向的对象的const为底层const
当执行对象的拷贝操作时,顶层const不受影响,而底层const却有限制,只能允许将非常量转换为常量。
constexpr是C++ 11中的新类型,以便由编译器来验证变量值是否是一个常量表达式(数据类型和初始值均为常量)。
用constexpr定义指针时,初始值必须是nullptr,0或存储于某个固定地址的对象。且修饰符只对指针有效,与所指对象无关。
auto类型是C++ 11引入的新类型说明符,由编译器去分析表达式所属的类型(类似Swift中的let,var),为了让编译器能通过初始值推算变量的类型,auto定义的变量必须有初始值。
使用一条auto语句声明多个变量时必须保证所有变量的基本数据类型相同。
auto声明指针或引用时一般会忽略顶层const,只保留底层const,如希望推断类型是一个顶层const,需要明确指出。
decltype(r) z; // 错误,解引用指针得到的类型是引用类型,所以这里m的类型是int ,而不是int,必须初始化 decltype(*p) m; // 错误,decltype用双层括号时得到的结果永远是引用,所以这里n的类型是int ,而不是int,必须初始化 decltype((i)) n;
“#define”指令把一个名字设定为预处理变量。
“#ifdef”当且仅当变量已定义时为真,”#ifndef”当且仅当变量未定义时为真,一旦检查结果为真,则执行后续操作直至遇到”#endif”指令为止。
#ifndef PEOPLE_H #define PEOPLE_H struct People { std::string name; bool male; #endif
用这些功能就可以防止重复包含发生。
注意:预处理变量包括头文件保护符必须唯一,为了避免与程序中其他实体发生名字冲突,一般全部大写。
CVTE寒暑假实习面试总结 目录前言1. 笔试2. 面试 主要总结一些笔试和面试的具体问题 1. 笔试 20道选择题(单选加多选) 2道算法题(算法题基本是场景题,但是基本思路都是leetcode的题目) 1道设计题(让你设计一个系统) 20道选择题基本都是计网+数据结构的排序题以及java的一些基本概念 具体可以参考我这篇文章都有大概的提到 java框架零基础从入门到精通的学习路线(超全) 算法题的思路leetcode基本都有 我当时做的算法题主要是这两道 【leetcode】剑指 Offer 62. 圆圈中最后
相关文章
- C++迭代器失效问题(insert、erase)
- Win10系列:VC++ XML文件解析
- C C++ 去除 unused的提示
- C/C++每日一练(20230314)
- C/C++基础讲解(五十七)之图形篇(绘制蓝天图案)
- C语言/C++常见习题问答集锦(十一)
- 《安富莱嵌入式周报》第293期:SEGGER开源其C/C++库源码emRun,丰富EMC电磁兼容资,OTA开源组件,2022 Github全球报告,内存安全指南
- [C++ 面试基础知识总结] 泛型算法
- [C++ 面试基础知识总结] 顺序容器
- [C++ 面试基础知识总结] 类
- [C++ 面试基础知识总结]表达式和函数
- [C++ 面试基础知识总结]字符串,向量和数组
- 成功解决基于VS2015(Visual Studio2015)编写C++程序调试时弹出窗口一闪而过的问题
- C++-11版本推荐使用using定义别名(替代typedef)
- C++使用技巧(二十四):回顾vector用法及多维数组使用
- C++:读写二进制文件到double数组,根据二进制数据量进行读取
- C++三种继承方式
- C++之const vector与vector相互转换(九十七)
- C语言之extern “C“之C与C++混用(三)
- C++ emplace_back与push_back的区别
- c++11特性使用
- 【C++ 科学计算】C++ 计算总平方和、残差平方和
- 这家公司的码农有多牛,用C++重写Kafka,还能与其API兼容
- C++基础知识要点--函数(Primer C++ 第五版 · 阅读笔记)
- C++基础知识要点--变量和基本类型 (Primer C++ 第五版阅读笔记)
- 【图像处理OpenCV(C++版)】——4.4 对比度增强之伽马变换