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

嵌入式C语言面试题_c语言基础面试题

我 只要一听到被面试者说:”const意味着常数”,我就知道我正在和一个业余者打交道。...下面是volatile变量的几个例子: 1) 并行设备的硬件寄存器(如:状态寄存器) 2) 一个中断服务子程序中会访问到的自动变量(Non-automatic variables) 3) 多线程应用中被几个任务共享的变量...1)一个参数既可以是const还可以是volatile?解释为什么。 2); 一个指针可以是volatile ?解释为什么。...15 Typedef C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。...C语言同意一些令人震惊的结构,下面的结构是合法,如果是它做些什么? int a = 5, b = 7, c; c = a+++b; 这个问题将做为这个测验的一个愉快的结尾。

80710

来看看这些嵌入式工程师常见面试题你会不会

C语言中,关键字static有三个明显的作用: 1) 函数体,一个声明为静态的变量在这一函数被调用过程中维持其值不变。...2) 模块内(但在函数体外),一个声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。...3) 模块内,一个声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制声明它的模块的本地范围内使用。...下面是volatile变量的几个例子: 1) 并行设备的硬件寄存器(如:状态寄存器) 2) 一个中断服务子程序中会访问到的自动变量(Non-automatic variables) 3) 多线程应用中被几个任务共享的变量...1) 一个参数既可以是const还可以是volatile?解释为什么。 2) 一个指针可以是volatile ?解释为什么。

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

​面试常问的16个C语言问题,你能答上来几个?

1 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SEC_YEAR (365*24*60*60)UL 考察点: #define 语法的基本知识(例如...C语言中,关键字static有三个明显的作用: 第一、修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。...第二、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。...15 Typedef C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。...16 C语言同意一些令人震惊的结构,下面的结构是合法,如果是它做些什么? int a = 5, b = 7, c; c = a+++b; 考察点: 这个问题将作为这个测验的一个愉快的结尾。

72420

C++之类和对象的使用(三)

常对象成员(数据成员和函数成员) 常数据成员 其作用和用法与一般常变量相似,用关键字const声明常数据成员。...如果在常对象中的成员函数未加const声明,系统把它编译为const成员函数。 常成员函数不能调用另一个const成员函数。...不能用一般的(指向const变量的)指针去指向它;如 const char c[ ]="boy"; const char *p1; p1=c; char *p2=c;//不合法,p2不是指向常变量的指针变量...如 char c1='a'; const char *p; p=&c1; *p='b';//非法,不能通过p改变变量c1的值 c1='b'; 3)如果函数的形参是指向const变量的指针,实参只能用指向...如果函数的形参是指向const变量的指针,执行函数的过程中显然不能改变指针变量所指向的变量的值,因此允许实参是指向const变量的指针,或指向const变量的指针。

83990

C++面试题,阿里、百度、腾讯、华为、小米100道C++面试题目及答案

void function()const;//常成员函数,常成员函数是不能改变成员变量值的函数。 错题解析:我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道。...Add@@YAHHH@Z)函数,但是test.c文件中这个Add函数被编译器重命名为_Add,由于.cpp文件中和.c文件中同一个函数名被编译器重命名后的名字不一样;所以.cpp文件声明外部函数找不到真正定义的地方...C语言中,关键字static有三个明显的作用: 1). 函数体,一个声明为静态的变量在这一函数被调用过程中维持其值不变。 2)....一个中断服务子程序中会访问到的自动变量(Non-automatic variables) 3)....,下面的结构是合法,如果是它做些什么?

1.6K20

const关键字到底该什么用

前言 我们都知道使用const关键字限定一个变量为只读,但它是真正意义上的只读?实际中又该如何使用const关键字?解答这些问题之前,我们需要先理解const关键字的基本使用。...本文说明C中的const关键字,不包括C++。 基本介绍 const是constant的简写,是不变的意思。但并不是说它修饰常量,而是说它限定一个变量为只读。...正因如此,如果需要使用const修饰一个变量,那么它只能在开始声明时就赋值,否则后面就没有机会了(后面会讲到一种特殊情况)。...第一种,a文件中定义,其他文件中使用外部声明,例如: a.h //a.h const int ARR[] = {0,1,2,3,4,5,6,7,8,9}; //定义int数组 b.c //b.c extern...const修饰的变量是真正的只读? 使用const修饰之后的变量真的是完全的只读

55720

总结---5

C语言中,关键字static有三个明显的作用: 1). 函数体,一个声明为静态的变量在这一函数被调用过程中维持其值不变。 2)....模块内(但在函数体外),一个声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3)....我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道。...一个参数既可以是const还可以是volatile?解释为什么。 2). 一个指针可以是volatile ?解释为什么。 3)....C语言同意一些令人震惊的结构,下面的结构是合法,如果是它做些什么? int a = 5, b = 7, c; c = a+++b; 这个问题将做为这个测验的一个愉快的结尾。

827100

12.2 C++常对象成员

C++常对象成员 C++中,可以将对象的成员声明const,包括常数据成员和常成员函数 C++常数据成员  常数据成员的作用与一般常变量相似,用关键字const声明常数据成员。...C++常成员函数  一般的成员函数可以引用本类中的cons数据成员,也可以修改它们,如果将成员函数声明为常成员函数,则只能引用本类中的数据成员,不能修改它们。...常成员函数可以引用cons数据成员,也可以引用const的数据成员;const数据成员可以被const成员函数引用,也可以被const的成员函数引用。...C++常对象成员注意事项 如果在一个类中,有些数据成员的值允许改变,另一些数据成员的值不允许改变,则可以将一部分数据成员声明const,以保证其值不被改变。...如果要求所有的数据成员的值都不允许改变, 则可以将所有的数据成员声明const。 如果已定义了一个常对象,只能调用其中的const成员函数,而不能调用const成员函数。

51110

C++奇迹之旅:类和对象const成员&&static关键字&&友元&&内部类

const 对象的权限被限制了,不能调用可能修改对象状态的 const 成员函数。这会导致权限的放大,编译时会报错。 const对象可以调用const成员函数? 答:可以。...const成员函数内可以调用其它的const成员函数? 答: 可以。这是权限的放小,因为 const 成员函数的权限被限制了。...修饰 友元函数可以类定义的任何地方声明,不受类访问限定符限制 一个函数可以是多个类的友元函数 友元函数的调用与普通函数的调用原理相同 友元类 友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员...比如上述Time类和Date类,Time类中声明Date类为其友元类,那么可以Date类中直接访问Time类的私有成员变量,但想在Time类中访问Date类中私有的成员变量则不行。...,只不过此时计算机还不清楚,想要让计算机识别人想象中的洗衣机,就需要人通过某种面相对象的语言(比如:C++、Java、Python等)将洗衣机用类来进行描述,并输入到计算机中 经过2之后,计算机中就有了一个洗衣机类

9910

C++中变量声明与定义的规则

定义i, 这样做抵消了extern的作用 static 当我们C/C++用static修饰变量或函数时,主要有三种用途: 局部静态变量 外部静态变量/函数 类内静态数据成员/成员函数 其中第三种只有...全局变量外部变量)的声明之前加上static就构成了静态的全局变量,全局变量本身就是静态存储变量,静态全局变量当然也是静态存储方式。...这两者存储方式上并无不同,这两者的区别在于静态全局变量的作用域是整个源程序。...当一个源程序由多个源程序组成时,静态的全局变量各个源文件中都是有效的,而静态全局变量则限制了其作用域,即只定义该变量的源文件内有效,同一源程序的其他源文件中不能使用它。...这种文件中进行静态声明的做法是从C语言继承而来的,C语言中声明为static的全局变量在其所在的文件外不可见。这种做法已经被C++标准取消了,现在的替代做法是使用匿名命名空间。

2.2K10

C++】类与对象理解和学习(下)

假如我们的类成员变量里存在一个const类型的变量。(const修饰的变量具有常数性,即只能初始化一次,初始化后的值就是该变量的值,不可再被修改)。 那么针对这种现象,应如何解决呢?...友元函数与友元类 友元函数 友元函数可以 直接访问类的 私有成员,它是 定义外部的 普通函数,不属于任何类,但需要在类的内部声明声明时需要加 friend关键字。...即a是b的友元,b是c的友元,但是这里a不是c的友元 友元函数可以类定义的任何地方声明,不受类访问限定符限制 友元函数不能用const修饰 一个函数可以是多个类的友元函数 友元函数的调用与普通函数的调用原理相同...内部类 如果一个类定义一个类的内部,这个内部类就叫做内部类。也就是类中定义一个类。当然,这种情况我们实际上并不常用,不过该知道的还是要知道。...受类访问限定符的限制,如果定义private里,则无法被直接调用 对于外部类的static成员变量,内部类可以直接使用,不需要外部类的对象/类名。

45530

PIC单片机C语言简记「建议收藏」

4.PICC的其它变量修饰关键词: extern — 外部变量声明。...如果在一个C 程序文件中要使用一些变量但其原型定义写在另外的文件中,那么本文件中必须将这些变量声明成“extern ”外部类型。...只要将其定义成volatile 类型后,编译后的代码就可以保证每次操作时直接从变量地址处取数。 const常数变量声明。这些变量就成为常数,程序运行过程中不能对其修改。...显然,被定义ROM区的变量是不能再在程序中对其进行赋值修改的,这也是“const”的本来意义。 persistent — 初始化变量声明。...2.指向ROM常数的指针   如果一组变量是已经被定义ROM区的常数,那么指向它的指针可以这样定义:       const unsigned char company[]=”Microchip”

1.6K20

那些你不知道的类和对象的知识

C++中,关键字explicit用来修饰类的构造函数,它的作用是防止隐式类型转换。当一个类的构造函数被声明为explicit时,编译器将不会自动执行隐式类型转换,而只能进行显式类型转换。...(2)静态成员函数为什么一定要在类外面初始化: C++中的静态成员变量程序运行时被分配内存,但是它们的定义是在编译时就已经完成的。声明静态成员变量时,需要在类的定义中进行,但不能在函数内部进行。...静态成员变量和静态成员函数为类提供了与类相关的特性和功能,并且可以不创建类的实例对象的情况下进行访问和使用。 静态成员函数可以调用静态成员函数?...如果需要在静态成员函数中调用静态成员函数,可以先创建一个对象,然后通过对象调用静态成员函数。 静态成员函数可以调用类的静态成员函数? 可以,静态成员函数可以调用类的静态成员函数。...友元函数不能用const修饰 因为友元函数不属于类,所以不受public,private等访问限定符影响,只是一个声明,类中的哪出现都可以.

17320

const特性总结(不断更新)

const A* c=new A();   A* e = c; [思考2]: 以下的这种赋值方法正确?   ...一个函数声明中,const 可以修饰函数的返回值,或某个参数;对于成员函数,还可以修饰是整个函数。...… 7 a=b=c; //正常 8 (a=b)=c; //不正常,但是合法 9 //若负值函数的返回值加const修饰,那么该返回值的内容不允许修改,上例中a=b=c依然正确。...变量赋值,具体可见思考题; 3 )参数中使用const应该使用引用或指针,而不是一般的对象实例,原因同上; 4 )const成员函数中的三种用法(参数、返回值、函数)要很好的使用;...,而声明的指针e指向的是一个常量,所以不正确; 2 这种方法正确,因为声明指针所指向的内容可变; 3 这种做法不正确; const A::operator=(const A&

70180

C语言笔记】#define与typedef的区别?

typedef typedef是C语言中用来为复杂的声明定义简单的别名,它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中...(3)连续定义几个变量的时候,typedef 能够保证定义的所有变量均为同一类型,而 #define 则无法保证。...'p2',你知道问题出在哪?...顺便提一下关于const声明的一些例子及其含义: const int a; //① int const b; //② const int *c; //③ int * const...d; //④ int const * e const; //⑤ ①a是常数,不可改变; ②b是常数,不可改变; ③c一个指向整型常数的指针,指针可以变,指针指向的内容不可以变; ④d是一个指向整型变量的常指针

4.5K40

C++初阶-类和对象下

、private3种访问级别,也可以具有返回值 相关问题: 静态成员函数可以调用静态成员函数?...不能,对于静态成员函数并不是某个对象的具体实例,也就没有this指针,无法调用静态成员函数 静态成员函数可以调用类的静态成员函数?...可以,静态成员函数为所有类对象所共享 示例: 三、C++11 新式成员初始化 概念: C++11支持静态成员变量声明时进行初始化赋值,但是要注意这里不是初始化,这里是给声明的成员变量缺省值..._b << endl; cout << p << endl; cout << n << endl; } private: // 静态成员变量,可以成员声明时给缺省值 int a = 10...的友元,则不能说明C时A的友元 五、内部类 概念: 如果一个类定义一个类的内部,这个内部类就叫做内部类,而另一个类为外部类 注意: 此时这个内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去调用内部类

34730

C++基础 杂记(一)

记录以下几点: const修饰符 static修饰符 C++指针和引用的区别 堆和栈的区别 const修饰符 const int m=7;:整型变量m的值为固定值7,不可改变 const int* p1...static 修饰的局部变量只初始化一次,且延长了局部变量的生命周期(作用域不变),程序结束后才释放 static 修饰的全局变量只能在本文件中访问,不能在其它文件中访问,即便 extern 外部声明也不可以...静态成员**可以**通过双冒号来使用::,静态成员引用**必须**与特定对象相对对象.成员名 类的静态成员函数中**不能**使用类的静态成员(因为**静态成员函数属于整个类,类实例化对象之前就已经分配空间了...**,而非静态成员类实例化对象后才有内存空间,因而静态成员不认识后来的静态成员) 类的静态成员函数可以调用用静态成员函数,但反之不能 静态成员函数没有 this 指针(因其属于整个类) 类的静态成员变量必须先初始化再使用...指针是一个变量,该变量存储的是一个地址,指向内存的一个存储单元 引用与原来的变量实质上是同一个东西,只不过是原变量一个别名而已 指针可以为空 引用不能为空 指针初始化后,可以改变进而指向其它的变量对象

36910

现代C++之constexpr

现代C++之constexpr constexpr C++11 引入、 C++14 得到大幅改进。...知道在编译时还是运行时知道该值的主要优点是,只要需要编译时间常数,就可以使用编译时间常数。...5.补充 内联变量C++17 引入了内联(inline)变量的概念,允许头文件中定义内联变量,然后像内联函数一样,只要所有的定义都相同,那变量的定义出现多次也没有关系。...这种区别在你用 & 去取一个 const int 值的地址、或将其传到一个形参类型为 const int& 的函数去的时候(这在 C++ 文档里的行话叫 ODR-use),就会体现出来。...这是因为 ODR(下面的one definition rule)-use 的类静态常量也需要有一个定义,没有内联变量之前需要在某一个源代码文件(头文件)中这样写: const int magic::

1.2K20

C++心决之类和对象详解(下篇)(封装进阶篇)

成员变量 类中 声明次序 就是其初始化列表中的 初始化顺序 ,与其初始化列表中的先后次序无关 1.3 explicit关键字 构造函数不仅可以构造与初始化对象, 对于接收单个参数的构造函数,...静态成员函数可以调用静态成员函数? 不可以,静态成员函数是要隐式的传this指针的,而静态成员函数没有this指针 2. 静态成员函数可以调用类的静态成员函数?...修饰(友元函数并不是类的成员函数,类的成员函数中有this指针,this指针才需要被const修饰)(非成员函数不允许使用类型限定符) 友元函数可以类定义的任何地方声明,不受类访问限定符限制 一个函数可以是多个类的友元函数...比如上述Time类和Date类,Time类中声明Date类为其友元类,那么可以Date类中直接访问Time类的私有成员变量,但想在Time类中访问Date类中私有的成员变量则不行。...内部类 概念: 如果一个类定义一个类的内部,这个内部类就叫做内部类 。内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。

7110

C++】const对象和const成员

如果我们定义一个对象之后,不希望在后面对这个对象进行修改,那么我们可以把这个对象声明const对象。 声明const对象之后,这个对象的所有数据成员后面都不能被修改!...//const const CTime time4(10); CTime const time5; 如果你用const对象引用了这个类中的const成员函数,就会报错: 错误 1 error C2662...函数 这个规则也就是强制用户不要对const成员进行错误的修改 const成员 1.const数据成员 也就是变量,比如实例中的m_hour,m_minute是普通数据成员 类内部使用const...2.初始化列表 初始化列表: 除了构造函数中对数据成员进行初始化,C++还提供另外一种方法来对数据成员进行初始化 初始化列表并不是构造函数内进行初始化 构造函数初始化列表以一个冒号开始,...遇到这种问题,我们可以把一个成员数据定义为mutable(多变的),它表示这个成员变量可以被const成员函数修改却不违法。

1.1K10
领券