zl程序教程

您现在的位置是:首页 >  后端

当前栏目

[C++ 面试基础知识总结] 变量和基本类型

C++基础知识变量面试 总结 类型 基本
2023-09-14 09:04:37 时间

原因是在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. 圆圈中最后