一些网上的题目

4 篇文章 0 订阅

1、

void funa(const int& a, const int& b)
{
cout << a << endl;
cout << b << endl;
}
int main()
{
int i = 0;
funa(++i, i++);

}

——————————————————————

这个根据不同的编译器会有不同的结果:

vs:2 0   vs的方法参数是右向左入栈

换成java的话是:0 1  与vs相反


2、

java:

        int i = 0;
        System.out.println("" +(i++) + (++i)+ (++i)+(i++)+ (++i) );
答案是:0 2 3 3 5 
vs:
    int i=0;
    cout<<i++<<++i<<i++<<++i<<i++<<++i<<endl;
莫名其妙的答案-, g++编译的也是一样

3、
void funb(char * p)
{
p = (char *)malloc(100);
}
int main()
{
char* str = NULL;
funb(str);
memcpy(str, "hello", 100);


cout << str;
}
结果:程序崩溃。 funb为传值,并没有改变str的内存指向,。 将funb改成 funb(char* &b) 就可以了

4.
void fun(char* p){ *p= 'c';};
void  main()
{

    char* p = "aa";
     cout<< *p;
}
p值为改变。
-----------------------------------------------------------
void fun( char** p)
{
    *p= "c";
};
void  main()
{

    char* p = "aa";
    fun(&p);
     cout<< *p;
}
传入指针的指针,p值改变。

5.
void fun(char* p){ *p= 'c';};
void  main()
{

    char* p = "aa";
     cout<< *p;
}



void fun( char** p)
{
    *p= "c";
};
void  main()
{

    char* p = "aa";
    fun(&p);
     cout<< *p;
}
5、实现不可继承的类型,还可以用单列实现
template <typename T> 
class Base
{
    friend T;
private:
    Base() {}
    ~Base() {}
};

class Finalclass : public Base<Finalclass>
{                
public:
    Finalclass() {}
    ~Finalclass() {}
};

class D : virtual public Base
{
    public;
    D(){};
    ~D(){};
};
void  main()
{
    Finalclass  *p = new Finalclass;  //堆上对象
    Finalclass  fs;                 //栈上对象
}
6、
void fun(char* p){ *p= 'c';};
void  main()
{

    char* p = "aa";
     cout<< *p;
}



void fun( char** p)
{
    *p= "c";
};
void  main()
{

    char* p = "aa";
    fun(&p);
     cout<< *p;
}

int _tmain(int argc, _TCHAR* argv[])
{
    func1();
    for(vector<B*>::iterator it = v.begin(); it != v.end(); ++it){
        cout<< (*it)->a << endl;
    }

    union V{
        struct X{
            unsigned char s1:2; //初始化内存大小
            unsigned char s2:3;
            unsigned char s3:3;
        }x;
        unsigned char c;
    }v;
    v.c = 100;
    printf("%d", v.x.s3);

7、定义一个无返回值的无参数fun指针类型

typedef void(*fun)(void);


8、实现递归100以内的加法

int add(int n){

if(n < 0)

return 0;

int sum = add(n-1);

return sum + n;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值