C常见面试问题
常量指针和指针常量:
常量指针:const int* p:指针指向一个常量,const修饰*,也就是说,*p是常量,不可变,但p是变量,p可变(指向内容不可变,指向可以改变),不需要初始化,可以在定义后赋值。
指针常量:int* const p:指针是一个常量,const修饰p,即是p是常量,p不可变,但指向的*p可变。(指向不可变,内容可变),必须初始化
堆和栈的生长方向?
答:对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,他的生长方向是向下的,是向着内存地址减小的方向增长。Dynamic_cast,const_cast,static_cast,reinterpret_cast区别:
答:(1)dynamic_cast:基类和派生类之间的转换,运行期间,会检查这个转换是否可能。表达式dynamic_castT*(a) 将a值转换为类型为T的对象指针。如果类型T不是a的某个基类型,该操作将返回一个空指针。static_castT*(a):编译期间处理,T和a必须是指针、引用、算术类型或枚举类型enum test{
test1,test2=2,test3=1,test4
};
上面代码中,test1,test4的值是多少?
答:test1的值是0,test4的值是2,默认的值随前一个变量加1.
类成员中,如果有enum类型的定义,(不是成员变量),该定义是
原创力文档

文档评论(0)