2024年笔试面试中cc++重要知识点整理.docx

2024年笔试面试中cc++重要知识点整理.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

笔试面试中C/C++重要知识点整顿(不定期更新)

1.??C和C++語言中的优先级规则

C語言中語言申明的优先级规则如下(后来分析的基础):

A?申明从它的第一种名字开始读取,然后按照优先级次序依次读取

B?优先级从高到低依次是

???????????B.1申明中被括号括起来的那部分

???????????B.2后缀操作符:

??????????括号()表达这是一种函数

??????????方括号[]表达这是一种数组

??????B.3前缀操作符:星号*表达“指向……的指针”

下面我們使用上述规则来分析如下例子

(1)?????char*const*(*next)();

(2)?????char*(*c[10])(int**p)

?????一步步分析:先分析括号里面的内容,我們懂得C是一种数组,保留的是“…..的指针”然后根据规则B,要先分析后缀,得到指针是一种函数指针。该函数参数為P返回值為char*。最终得到:C是一种数组元素,它的元素类型是函数指针,其所指向的函数的返回值是一种指向char的指针。

(3)?????void(*signal(intsig,void(*func)(int)))(int);

???从signal所在的括号开始提取:void(*signal(??))(int);?首先signal后缀跟的是括号,我們得到signal是一种函数,然后得到前缀為*表达此函数返回的是一种”……指针”…………最终得到signal是一种函数,返回函数指针,函数所指向的指针接受一种int类型的参数并且返回void。

???然后我們看signal函数参数自身:void(*func)(int)?表达func是一种函数指针,此指针指向的函数接受一种int参数,返回值是void。

??假如我們定义typedefvoid(*ptr_to_func)(int)则表达ptr_to_func是一种函数指针,该函数接受一种int参数,返回值為void那么上述函数可以写為

??????????ptr_to_funcsignal(intsig,ptr_to_func);?表达signal是一种函数,接受参数為int和ptr_to_func,返回ptr_to_func;

2.???typedefintx[10]与#definexint[10]的区别

typedef与宏文本替代之间存在关键性的区别。如下:

??第一:可以用其他类型阐明符对宏名进行扩展,但对typedef所定义的类型名却不能这样做。如下:

?#definepeachint

?unsignedpeachi;//可以

??

?typedefintbanana;

?unsignedbananai;//錯误

第二:在持续申明的变量中用typedef定义的类型可以保证申明中所有变量均同一种类型,而用#define定义的类型却无法保证。如下:

??#defineint_ptrint*

??int_ptrchalk,cheese;

??通过宏扩展,第二行变為:

??int*chalk,cheese;?这使得chalk与cheese為不一样的类型。chalk為int类型的指针,而cheese只是int类型变量。

???

???typedef?char*char_ptr;?

???char_ptrBenley,Royce;??Benley,和Royce类型是相似的。都是指向char的指针

原因:#define在编译時仅仅是名称替代而typedef可以被当作一种彻底封装的“类型”。在理解typedef中变量详细体現什么意思的時候可以按照前面說的优先级规则进行解析。

3.??指针与typedef

typedef中使用指针往往带来意外的成果。例:

typedefstring*pstring;

constpstringcstr;

c_str究竟代表什么类型。我們懂得pstring是指向string的指针诸多人都会误认為真正的类型是conststring*cstr。錯误原因是将typedef当成#define直接进行文本扩展了,其实const修饰的是pstring而pstring是一种指针,因此,对的的等价形式应当是

string*constcstr;

4.?类与面向对象编程

4.1类接口与实現的概念:

????每个类都定义了一种接口(可以不是很确切的理解為类中访问级别為public的函数為接口)和一种实現。接口由使用该类的代码需要执行

文档评论(0)

159****1748 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档