首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言面试题汇总(持续更)「建议收藏」

所以调用这些对象速度要相对来得低一些。 3、堆栈数据结构区别 堆(数据结构):堆可以被看成是一棵树,:堆排序。 栈(数据结构):一种先进后出数据结构。 三、数据结构集中问题 1....以下面的语句为 int *p = &a; *p = 100; 第1代码*用来指明 p 是一个指针变量,第2代码*用来获取指针指向数据。 需要注意是,给指针变量本身赋值时不能加*。...const int * p1 = &i; //p1指向值不能改变 int * const p2 =&j; //p2本身值(即指向地址)不能改变 上面定义了两个指针p1p2。...在定义1const限定是*p1,即其指向空间值不可改变,若改变其指向空间*p1=20,则程序会报错;但p1值是可以改变,对p1重新赋值p1=&k是没有任何问题。...在定义2const限定是指针p2,若改变p2p2=&k,程序将会报错;但*p2,即其所指向值可以改变,*p2=80是没有问题,程序正常执行。 const常量会在内存中分配??

75530

CC++面试必备知识

const 修饰变量 用来修饰不可赋值变量,如果一个变量在声明初始化之后不希望被修改,可以声明为constconst修饰变量应该进行初始化const修饰变量有可能改变,部分编译器可用scanf...用来修饰外部变量(全局),表示该变量在其他文件定义。首先讲一下声明与定义, 声明不等于定义,声明只是指出了变量名字,并没有为其分配存储空间;定义指出变量名字同时为变量分配存储空间,定义包含了声明。...内存对齐(结构体内存大小规则) 基础知识 在 C/C++ 结构体/类是一种复合数据类型,其构成元素既可以是基本数据类型(int、long、float等)变量,也可以是一些复合数据类型(如数组、结构...这种几个类型不同变量共同占用同一段内存结构,称为“共用体”类型结构。共用体,也称为联合体。...另外,如果第7初始化为NULL,编译时不会报错,但是,它就成了野指针野指针野指针啊,操作野指针是很危险; 一级指针传递函数内部更改不影响实参一级指针值,所以此处要么使用二级指针,要么使用引用。

18130
您找到你想要的搜索结果了吗?
是的
没有找到

C语言编程规范 clean code

Good: 右大括号与 else 语句在同一 ... } // Good: 右大括号独占一 } 函数声明定义 规则2.3 函数声明、定义返回类型函数名在同一...;函数参数列表换行时应合理对齐 在声明定义函数时候,函数返回值类型应该函数名在同一。...参数列表左圆括号总是函数名在同一,不要单独一;右圆括号总是跟随最后一个参数。...左大括号被内容跟随时,对应右大括号也应跟随内容 规则2.11 结构联合体在按成员初始化时,每个成员初始化单独一 C99标准支持结构联合体按照成员进行初始化,标准叫"指定初始化"(designated...建议6.3 函数式宏不超过10(非空非注释) 函数式宏本身一大问题是比函数更难以调试定位,特别是宏过长,调试定位难度更大。 而且宏扩展会导致目标代码膨胀。建议函数式宏不要超过10

4.2K10

C语言编程规范 clean code

Good: 右大括号与 else 语句在同一 ... } // Good: 右大括号独占一 } 函数声明定义 规则2.3 函数声明、定义返回类型函数名在同一...;函数参数列表换行时应合理对齐 在声明定义函数时候,函数返回值类型应该函数名在同一。...参数列表左圆括号总是函数名在同一,不要单独一;右圆括号总是跟随最后一个参数。...左大括号被内容跟随时,对应右大括号也应跟随内容 规则2.11 结构联合体在按成员初始化时,每个成员初始化单独一 C99标准支持结构联合体按照成员进行初始化,标准叫"指定初始化"(designated...建议6.3 函数式宏不超过10(非空非注释) 函数式宏本身一大问题是比函数更难以调试定位,特别是宏过长,调试定位难度更大。 而且宏扩展会导致目标代码膨胀。建议函数式宏不要超过10

5.4K10

『C++』我想学C++,C++太难了,那我想入门,给我10分钟我带你入门

endl是一个函数模板,这里知道是用来换行即可。 (注意:C++程序一定是从主函数开始执行) 良好习惯之规范 一个说明或一个语句占一,例如:包含头文件、一个可执行语句结束都需要换行。...在使用标识符时还有注意以下几点: 标识符长度最好不要超过8位,因为在某些版本C规定标识符前8位有效,当两个标识符前8位相同时,则被认为是同一个标识符。 标识符是严格区分大小写。...目前听说但未遇到用法: 1.有参宏定义 2.宏定义特殊操作符 3.宏定义多行定义 4.防止重复包含头文件 条件分支结构 1.if分支语句 程序结构...1.函数参数 1)形参实参 形参:在定义函数时候,函数名后面小括号参数 , 格式: 数据类型 变量 :int x; 形参作用域:只能在本函数中使用 实参:调用函数时候传递参数...②地址传递 地址传递与值传递不同在于,它把实参存储地址传送给形参,使得形参指针实参指针指向同一块地址。因此,被调用函数对形参指针所指向地址内容任何改变都会影响到实参。

1.6K10

C++ Qt常用面试题整理(不定时更新)

conststatic不可同时修饰类成员函数,const修饰成员函数表示不能修改对象状态,static修饰成员函数表示该函数属于类,不属于对象,二者相互矛盾。...难记点(我是感觉很SB,除了面试,实际工作完全没遇到): const char* p = new char(‘a’): 表示p指向内容不可修改但是p可修改。...引用:是一个别名,还是变量本身。对引用进行任何操作就是对变量本身进行操作。 相同点:二者都可以对变量进行修改。 不同点:指针可以不必须初始化,引用必须初始化。...注意:对象不包含虚函数表,只有需指针,类才包含虚函数表,派生类会生成一个兼容基类虚函数表。 6.常用数据结构 1.vector:向量,连续存储,可随机访问。...QMutex目的是保护一个对象/数据结构或者代码段在同一时间只有一个线程可以访问。

2.3K10

C++ Primer Plus 第四章 复合类型 学习笔记

结构简介 结构是用户定义类型,而结构声明定义了类型数据属性。 定义类型之后,就直接创建类型变量。 结构比数组灵活,同一结构可以存储多种类型数据。...long long_val; double double_val; }; 5.1 结构共用体区别 结构可以同时存储int、longdouble。...嵌入式系统编程(控制烤箱、MP3播放器),内存非常宝贵。 常用于操作系统数据结构或硬件数据结构。...在cout多数C++表达式char数组名、char指针以及用引号括起来字符串常量都被解释为字符串第一个字符地址。 不要使用字符串常量或未被初始化指针来接收输入。...如果标识符是指向结构指针,则使用箭头运算符(->)。 把new用于结构两个步骤 创建结构要创建结构,需要同时使用结构类型new。 创建访问其成员。

1.8K00

C++数组初始化

在自由存储区创建数组对象是没有名字,只能通过其地址间接地访问堆对象。 注意:C++使用newdelete在堆(自由存储区)上分配释放动态数组。 动态数组初始化: 1....= 1000000; ++ix) { char *pc2 = new char[len]; // pc2指向存储空间内容会动态改变,因此不使用const strncpy (pc2...数组名作为函数形参时,在函数体内,其失去了本身内涵,仅仅只是一个指针,而且在其失去其内涵同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。...数组存储格式 多维数组在内存存储时是按照最低维连续格式存储二维数组{ {1,2},{3,4}}在内存位置是这样顺序“1,3,2,4”,这跟matlab是有区别的,matlab是按列进行存储...字符串每个字符占用一个字节,算上最后空字符,字符串需要字节数要比包含字节数多一个。

1.5K20

C语言与C++面试知识总结

没有 const reference,因为引用本身就是 const pointer (为了方便记忆可以想成)被 const 修饰(在 const 后面)值不可改变,如下文使用例子 p2、p3。...在以下场景,经常需要显式引用 this 指针: 为实现对象链式引用; 为避免对同一对象进行赋值操作; 在实现一些数据结构时, list。...3.7 分割线 可以在一中用三个以上减号来建立一个分隔线,同时需要在分隔线上面空一。...采用独占式拥有,意味着可以确保一个对象其相应资源同一时间只被一个 pointer 拥有。...允许将任何指针转换为任何其他指针类型( char* 到 int* 或 One_class* 到 Unrelated_class* 之类转换,但其本身并不安全) 也允许将任何整数类型转换为任何指针类型以及反向转换

4.9K41

什么?CC++面试过不了?因为你还没看过这个!

没有 const reference,因为引用本身就是 const pointer (为了方便记忆可以想成)被 const 修饰(在 const 后面)值不可改变,如下文使用例子 p2、p3。...在以下场景,经常需要显式引用 this 指针: 为实现对象链式引用; 为避免对同一对象进行赋值操作; 在实现一些数据结构时, list。...3.7 分割线 可以在一中用三个以上减号来建立一个分隔线,同时需要在分隔线上面空一。...采用独占式拥有,意味着可以确保一个对象其相应资源同一时间只被一个 pointer 拥有。...允许将任何指针转换为任何其他指针类型( char* 到 int* 或 One_class* 到 Unrelated_class* 之类转换,但其本身并不安全) 也允许将任何整数类型转换为任何指针类型以及反向转换

3.6K50

嵌入式笔试面试题目系列(二)

6、const用法(定义用途)(必考) const主要用来修饰变量、函数形参类成员函数: 1)用const修饰常量:定义时就初始化,以后不能更改。...以下几种情况都会用到volatile: 1、并行设备硬件寄存器(:状态寄存器) 2、一个中断服务子程序中会访问到非自动变量 3、多线程应用中被几个任务共享变量 8、const常量#define...要是非要使用sizeof来得到指向内容大小,就得使用数组名才 char a[10]; sizeof(a):10 //检测到a是一个数组类型。 ?...结构体struct内存对齐3大规则: 1.对于结构各个成员,第一个成员偏移量是0,排列在后面的成员其当前偏移量必须是当前成员类型整数倍; 2.结构体内所有数据成员各自内存对齐后,结构本身还要进行一次内存对齐...ac公用同一片内存区域,所以更改c,必然会影响a数据 #include int main(){ union w { int a; char b;

64230

C++打怪 之 编程风格指南 V1.0

如果重载函数目的是为了支持不同数量同一类型参数, 则优先考虑使用 std::vector 以便使用者可以用 列表初始化 指定参数。...4.4 函数声明与定义 总述 返回类型函数名在同一,参数也尽量放在同一,如果放不下就对形参进行分行,分行方式与函数调用一致。...如果返回类型函数名在一放不下, 分行. 如果返回类型与函数声明或定义分行了, 不要缩进. 左圆括号总是函数名在同一. 函数名左圆括号间永远没有空格. 圆括号与参数间没有空格....左大括号总在最后一个参数同一末尾处, 不另起新. 右大括号总是单独位于函数最后一, 或者与左大括号同一. 右圆括号左大括号间总是有一个空格. 所有形参应尽可能对齐....尤其是: 两个函数定义之间空行不要超过 2 , 函数体首尾不要留空行, 函数体也不要随意添加空行. 基本原则是: 同一屏可以显示代码越多, 越容易理解程序控制流.

1.2K50

C 二维数组指针、函数指针、typedef等一些笔记

普通用法 typedef 复杂用法 extern包含头文件 const 二维函数指针 二维数组 char a[5][24] = {0}; printf("%p\r\n", a); printf...函数传了ptr本身地址0x1进去,在函数内部将它0x1指向旧地址0x2指向了新地址0x3。跳出函数后,ptr本身地址0x1没变,而它指向地址变成了0x3。...extern包含头文件 extern是C语言中一个关键字,一般用在变量名前或函数名前,作用是用来说明“此变量/函数是在别处定义,要在此处引用” 使用extern包含头文件来引用函数区别: extern...extern, (全局变量在不指定初值时会自动初始化为0) 头文件包含都是函数声明,而不是函数定义 最好不要在头文件定义变量,例如全局变量 constconst与*前后关系,并且对于这个声明变量文字叙述要从赋值号...=前面开始,从右向左逐个翻译,const翻译为常量,*翻译为指针,const char* name就翻译为name是一个指针,指向char,并且是const,使用汉语构造句法就是name是一个指向const

54810

【CC++】C语言特性总结

命令、选项源文件之间使用空格分隔一命令可以有零个、一个或多个选项文件名可以包含文件绝对路径,也可以使用相对路径如果命令包含输出可执行文件文件名,可执行文件文件名会自动生成一个默认名...int,b赋值为10     return 0; } 从广义角度来讲声明包含着定义,即定义是声明一个特例,所以并非所有的声明都是定义:  int b 它既是声明,同时又是定义对于 extern...同一个数组所有的成员都是相同数据类型,同时所有的成员在内存地址是连续。  数组属于构造数据类型: 一个数组可以分解为多个数组元素:这些数组元素可以是基本数据类型或构造类型。 ...在定义数组同时进行赋值,称为初始化。全局数组若不初始化,编译器将其初始化为零。局部数组若不初始化,内容为随机值。  数组名是一个地址常量,代表数组首元素地址。 ...在内存并不存在二维数组,二维数组实际硬件存储器是连续编址,也就是说内存只有一维数组,即放完一之后顺次放入第二一维数组存放方式是一样

99500

【CC++】C语言特性总结

命令、选项源文件之间使用空格分隔 一命令可以有零个、一个或多个选项 文件名可以包含文件绝对路径,也可以使用相对路径 如果命令包含输出可执行文件文件名,可执行文件文件名会自动生成一个默认名...赋值为10 return 0; } 从广义角度来讲声明包含着定义,即定义是声明一个特例,所以并非所有的声明都是定义: int b 它既是声明,同时又是定义 对于 extern b来讲它只是声明不是定义...同一个数组所有的成员都是相同数据类型,同时所有的成员在内存地址是连续。 数组属于构造数据类型: 一个数组可以分解为多个数组元素:这些数组元素可以是基本数据类型或构造类型。...在定义数组同时进行赋值,称为初始化。全局数组若不初始化,编译器将其初始化为零。局部数组若不初始化,内容为随机值。 数组名是一个地址常量,代表数组首元素地址。...在内存并不存在二维数组,二维数组实际硬件存储器是连续编址,也就是说内存只有一维数组,即放完一之后顺次放入第二一维数组存放方式是一样

1.2K10
领券