【C/C++】知识点

1.C++中的参数传递机制:值传递、指针传递、引用传递

 

2.C++的内部类和外部类:

一个讲得不错的博客,不过不让转载:C++内部类

 

3.static 可以修饰局部变量、全局变量和函数。 不可修饰类!

 

4.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是:出错!友元函数不是成员函数,必须要有参数。

 

5.以下代码的输出结果是?

main() { 
    char str[]="S\065AB"; 
    printf("\n%d", sizeof(str)); 
}

答:5    \065是一个8进制数字

 

6.下面这段代码会打印出什么?

class A
{
public :
     A()
     {
         printf( "A " );
     }
     /*virtual*/
     ~A()
     {
         printf( "deA " );
     }
};
 
class B
{
public :
     B()
     {
         printf( "B " );
     }
     ~B()
     {
         printf( "deB " );
     }
};
 
class C:  public A,  public B
{
public :
     C()
     {
         printf( "C " );
     }
     ~C()
     {
         printf( "deC " );
     }
};
int main()
{
     A *a =  new C();
     delete a;
     return 0 ;
}
 
答: 
A B C deA 
构造函数的执行先执行父类,再执行子类。析构顺序想反
A B的析构函数 不是虚函数,所以不会执行子类的虚函数
 
 
7. Java, Object-C, C#都是类C语言, python不是
 
8.
在linux下64位c程序,请计算输出的三个sizeof分别是()
void func(char str_arg[100])
{
     cout<<sizeof(str_arg)<<endl;
}
int main(int argc,char* argv[])
{
     char str[]="Hello";
     char *p=str;
     cout<<sizeof(str)<<endl;
     cout<<sizeof(p)<<endl;
     func("test");
     return 0;
}

6,8,8      64位的指针大小为8, str_arg做形参是一个指针。

 
9. 重载要求 输入参数个数或者 类型发生变化。只有返回值类型不同, 不算重载!!
 
10.下面代码的输出:
char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; 
char **cp[] = { c+3, c+2, c+1, c }; 
char ***cpp = cp; 
 
int main(void)
{ 
    printf("%s", **++cpp); 
    printf("%s", *--*++cpp+3); 
    printf("%s", *cpp[-2]+3); 
    printf("%s\n", cpp[-1][-1]+1); 
    return 0;
}

答:POINTERSTEW   注意++, -- , *(取值) 的优先级都大于 加减法

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值