做网站毕业设计能过吗,wordpress更改生成小图大小,吉林关键词排名优化软件,北京网站建设z亿玛酷1专注100编程书屋_孔夫子旧书网
某日二师兄参加XXX科技公司的C工程师开发岗位第7面#xff1a; 面试官#xff1a;C中#xff0c;static和const的关键字有哪些用法? 二师兄#xff1a;satic关键字主要用在以下三个方面#xff1a;1.用在全局作用域#xff0c;修饰的变量或者… 100编程书屋_孔夫子旧书网
某日二师兄参加XXX科技公司的C工程师开发岗位第7面 面试官C中static和const的关键字有哪些用法? 二师兄satic关键字主要用在以下三个方面1.用在全局作用域修饰的变量或者函数为静态的限制在本文件内使用。2.方法内修饰修饰静态局部变量在第一次访问的时候初始化。3.内类修饰成员函数和成员变量此函数或变量由类持有而非类的对象持有。 二师兄const关键字主要也有三个用途1.修饰函数参数则在函数内部不可以修改此参数。2.修饰类的成员方法表面此方法不会更改类对象的任何数据。3.修饰变量表明变量不可以被修该。 面试官现在两个指针一个是 const int*,另一个是int * const,两者有什么区别 二师兄这要要看const和* 的位置const在前称为常量指针const在后称为指针常量。常量指针的指针部分可变指针指向的内容不可变。指针常量则相反指针指向的内容可变指针不可变。 面试官嗯那么你知道顶层const和底层const吗 二师兄额。。。不知道。。。 面试官知道constexpr关键字的作用吗 二师兄了解一些。constexpr关键字修饰的变量具有编译器求值的功能。修饰的函数是否在编译器求值要取决于传入的参数是不是编译器确定的这属于元编程的范畴。 面试官嗯那你知道consteval和constinit这两个关键字的作用吗 二师兄额。。。了解过一些忘记了。 面试官好的回去等通知吧。 让我们来复盘一下今日二师兄的表现 const在前称为常量指针const在后称为指针常量。 这里的表述仁者见仁智者见智。但是在大名鼎鼎的《C Primer Edition 5》中文版中const int* 被称为指向常量的指针而int* const则被称为常量指针。这种表述更容易理解两种指针的差异。 你知道顶层const和底层const吗 这里的顶层const和底层const概念主要是为了区分const修饰的是变量本身还是变量指向的内容。
int i 42;
const int ci 42;//顶层const
const int* pi i; //磁层const因为const修饰的是i所在的地址不能通过pi去修改i但是可以修改pi
int* const pi2 i;//顶层const因为pi2无法修改
const int ri i; //底层const不能通过ri修改i在传递参数时顶层const可以被忽略而底层const不能被忽略。 你知道consteval和constinit这两个关键字的作用吗 还记得constexpr是否在编译时求值要取决于传入的参数吗如果传入的参数是编译时确定的constexpr函数就会在编译时求值反之则会在运行时求值。
constexpr int add(int a, int b)
{return ab;
}constexpr int sum1 add(1,2); //编译时求值int a 1, b 2;
int sum2 add(a,b); //运行时求值当使用consteval修饰函数和变量时如果不能在编译时求值则编译错误。
consteval int add(int a, int b)
{return ab;
}
constexpr int sum1 add(1,2); //编译通过在编译时求值
int a 1, b 2;
int sum2 add(a,b); //编译失败constinit关键字用于声明一个变量为常量初始化变量。使用constinit可以保证静态变量的初始化顺序和线程安全性从而避免竞争条件的发生。需要注意的是constinit关键字只能用于静态变量的初始化不能用于动态变量的初始化。
需要注意的是consteval和constinit关键字是C20引入的 小伙伴们可以在编译时加入-stdc20尝试使用这两个关键字。
好了今日份面试到这里就结束了小伙伴们对于今天二师兄的面试能打几分呢