C++知识点
1、直接使用结构体做为参数 struct sclass { int a; int b; }; int Plus(int a,int b) { return a+b; } int main(int argc,char* argv[]) { sclass s; s.a = 10; s.b = 20; int x = Plus(s.a,s.b); printf("%dn",x); return 0; } 总结: 反汇编: sub esp,10h 2、传递结构体指针 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 = Plus(&s); printf("%dn",x); return 0; } 反汇编: mov dword ptr [ebp-10h],0Ah 3、函数可以放在结构体里面,也可以放在结构体外面 struct sclass { int a; int b; int c; int d; int Plus(sclass* sc) { return sc->a+sc->b; } }; 探测:通过sizeof来探测将函数放在里面与外面结构体的大小有什么变化? 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 %xn",x,sizeof(s)); return 0; } 注意观察反汇编: ? 5、封装、类、成员函数 struct sclass { int a; int b; int c; int d; int Plus() { return a+b; } }; int main(int argc,char* argv[]) { sclass s; s.a = 10; s.b = 20; int x = s.Plus(); printf("%d %xn",sizeof(s)); return 0; } 封装: ?6、什么是this指针? struct sclass { int a; int b; int c; int d; int Plus() { return a+b; } }; sclass s; s.Plus(); 观察反汇编: this指针的特点: //显示使用this指针 struct sclass { int a; int b; void Init(int a,int b) { this->a = a; this->b = b; } void Print() { printf("%d %d",a,b); } }; sclass s; s.Init(1,2); s.Print(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |