滴水逆向——C++_this指针

1、直接使用结构体做为参数\传递结构体指针

滴水逆向——C++_this指针

滴水逆向——C++_this指针

2、空结构体的大小为1

滴水逆向——C++_this指针

3、函数可以放在结构体里面,也可以放在结构体外面

struct sclass
{
    int a;
    int b;
    int c;
    int d;

    int Plus(sclass* sc)
    {
        return sc->a + sc->b;
    }
};

探测结构体的大小为:滴水逆向——C++_this指针

4、函数放在里面如何使用的问题

struct sclass
{
    int a;
    int b;
    int c;
    int d;

    int Plus(sclass* sc)
    {
        return sc->a + sc->b;
    }
};

int main(int argc, char* argv[])
{
    sclass s;
    s.a = 10;
    s.b = 20;

    int x = s.Plus(&s);

    printf("%d %x\n", x, sizeof(s));
    return 0;
}

滴水逆向——C++_this指针

5、封装、类、成员函数

滴水逆向——C++_this指针

封装:

a.将函数定义到结构体内部,就是封装.

b.编译器会自动传递结构体的指针给函数.

类:

带有函数的结构体,称为类.

成员函数:

结构体里面的函数,称为成员函数.

6、this指针

滴水逆向——C++_this指针

this指针的特点:

a.你用或者不用,它就在那里

b.参数个数确定的时候,用ecx来传递

c.参数个数不确定的时候,最后一个传递(参见不定长参数)

7、显示使用this指针

滴水逆向——C++_this指针

this指针的特点:
a.this指针不能做++ --等运算,不能重新被赋值.
b.this指针不占用结构体的宽度.