From 2a3143019016bc4adb07372e37e0f83133f54736 Mon Sep 17 00:00:00 2001 From: light-city <455954986@qq.com> Date: Fri, 26 Jul 2019 20:02:15 +0800 Subject: [PATCH] update dir --- README.md | 1 + struct/README.md | 228 ++++++++++++++++++++++++++++++ struct/ext | Bin 0 -> 9616 bytes struct/ext_struct_func.cpp | 28 ++++ struct/sf | Bin 0 -> 8992 bytes struct/stff | Bin 0 -> 9152 bytes struct/struct_func | Bin 0 -> 8768 bytes struct/struct_func.c | 27 ++++ struct/struct_func.cpp | 25 ++++ struct/struct_func_func.cpp | 39 +++++ struct/stu | Bin 0 -> 9112 bytes struct_class/README.md | 222 +++++++++++++++++++++++++++++ struct_class/ext | Bin 0 -> 9616 bytes struct_class/ext_struct_func.cpp | 28 ++++ struct_class/sf | Bin 0 -> 8992 bytes struct_class/stff | Bin 0 -> 9152 bytes struct_class/struct_func | Bin 0 -> 8768 bytes struct_class/struct_func.c | 27 ++++ struct_class/struct_func.cpp | 25 ++++ struct_class/struct_func_func.cpp | 39 +++++ struct_class/stu | Bin 0 -> 9112 bytes 21 files changed, 689 insertions(+) create mode 100644 struct/README.md create mode 100755 struct/ext create mode 100644 struct/ext_struct_func.cpp create mode 100755 struct/sf create mode 100755 struct/stff create mode 100755 struct/struct_func create mode 100644 struct/struct_func.c create mode 100644 struct/struct_func.cpp create mode 100644 struct/struct_func_func.cpp create mode 100755 struct/stu create mode 100644 struct_class/README.md create mode 100755 struct_class/ext create mode 100644 struct_class/ext_struct_func.cpp create mode 100755 struct_class/sf create mode 100755 struct_class/stff create mode 100755 struct_class/struct_func create mode 100644 struct_class/struct_func.c create mode 100644 struct_class/struct_func.cpp create mode 100644 struct_class/struct_func_func.cpp create mode 100755 struct_class/stu diff --git a/README.md b/README.md index 958cc51..1d81c4a 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ - [x] [assert那些事](./assert) - [x] [位域那些事](./bit) - [x] [extern那些事](./extern) +- [x] [C和C++中struct那些事](./struct) ## 关于作者: 个人公众号: diff --git a/struct/README.md b/struct/README.md new file mode 100644 index 0000000..264435d --- /dev/null +++ b/struct/README.md @@ -0,0 +1,228 @@ +# 一文搞懂C和C++中struct + +## 关于作者: + +个人公众号: + +![](../img/wechat.jpg) + +## 1.C中struct + +- 在C中struct只单纯的用作数据的复合类型,也就是说,在结构体声明中只能将数据成员放在里面,而不能将函数放在里面。 +- 在C结构体声明中不能使用C++访问修饰符,如:public、protected、private 而在C++中可以使用。 +- 在C中定义结构体变量,如果使用了下面定义必须加struct。 +- C的结构体不能继承(没有这一概念)。 +- 若结构体的名字与函数名相同,可以正常运行且正常的调用!例如:可以定义与 struct Base 不冲突的 void Base() {}。 + +完整案例: + +```c +#include + +struct Base { // public + int v1; +// public: //error + int v2; + //private: + int v3; + //void print(){ // c中不能在结构体中嵌入函数 + // printf("%s\n","hello world"); + //}; //error! +}; + +void Base(){ + printf("%s\n","I am Base func"); +} +//struct Base base1; //ok +//Base base2; //error +int main() { + struct Base base; + base.v1=1; + //base.print(); + printf("%d\n",base.v1); + Base(); + return 0; +} +``` + +最后输出: + +``` +1 +I am Base func +``` + +完整代码见:[struct_func.c](./struct_func.c) + +## 2.C++中struct + +与C对比如下: + +- C++结构体中不仅可以定义数据,还可以定义函数。 +- C++结构体中可以使用访问修饰符,如:public、protected、private 。 +- C++结构体使用可以直接使用不带struct。 +- C++继承 +- 若结构体的名字与函数名相同,可以正常运行且正常的调用!但是定义结构体变量时候只用用带struct的! + +例如: + +> 情形1:不适用typedef定义结构体别名 + +未添加同名函数前: + +```c++ +struct Student { + +}; +Student(){} +Struct Student s; //ok +Srudent s; //ok +``` + +添加同名函数后: + +```c++ +struct Student { + +}; +Student(){} +Struct Student s; //ok +Srudent s; //error +``` + +> 情形二:使用typedef定义结构体别名 + +```c++ +typedef struct Base1 { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}B; +//void B() {} //error! 符号 "B" 已经被定义为一个 "struct Base1" 的别名 +``` + +> 前三种案例 + +```c++ +#include +#include + +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}; + +int main() { + struct Base base1; //ok + Base base2; //ok + Base base; + base.v1=1; + base.v3=2; + base.print(); + printf("%d\n",base.v1); + printf("%d\n",base.v3); + return 0; +} +``` + +完整代码见:[struct_func.cpp](struct_func.cpp) + +> 继承案例 + +```c++ +#include +#include +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + virtual void print(){ + printf("%s\n","Base"); + }; +}; +struct Derived:Base { + + public: + int v2; + void print(){ + printf("%s\n","Derived"); + }; +}; +int main() { + Base *b=new Derived(); + b->print(); + return 0; +} +``` + +完整代码见:[ext_struct_func.cpp](./ext_struct_func.cpp) + +> 同名函数 + +```c++ +#include +#include + +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}; + +typedef struct Base1 { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}B; +void Base(){ + printf("%s\n","I am Base func"); +} +//void B() {} //error! 符号 "B" 已经被定义为一个 "struct Base1" 的别名 +int main() { + struct Base base; //ok + //Base base1; // error! + base.v1=1; + base.v3=2; + base.print(); + printf("%d\n",base.v1); + printf("%d\n",base.v3); + Base(); + return 0; +} +``` +完整代码见:[struct_func_func.cpp](./struct_func_func.cpp) + +## 3.总结 + +### C和C++中的Struct区别 + +| C | C++ | +| ------------------------------------------------------ | ------------------------------------------------------------ | +| 不能将函数放在结构体声明 | 能将函数放在结构体声明 | +| 在C结构体声明中不能使用C++访问修饰符。 | public、protected、private 在C++中可以使用。 | +| 在C中定义结构体变量,如果使用了下面定义必须加struct。 | 可以不加struct | +| 结构体不能继承(没有这一概念)。 | 可以继承 | +| 若结构体的名字与函数名相同,可以正常运行且正常的调用! | 若结构体的名字与函数名相同,使用结构体,只能使用带struct定义! | \ No newline at end of file diff --git a/struct/ext b/struct/ext new file mode 100755 index 0000000000000000000000000000000000000000..d450b9f8ebe93e7a673deaa6071f30abb5bdd080 GIT binary patch literal 9616 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 +#include + +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + virtual void print(){ + printf("%s\n","Base"); + }; +}; + +struct Derived:Base { + + public: + int v2; + void print(){ + printf("%s\n","Derived"); + }; +}; + +int main() { + Base *b=new Derived(); + b->print(); + return 0; +} diff --git a/struct/sf b/struct/sf new file mode 100755 index 0000000000000000000000000000000000000000..321061d21e6b74b8b0d849adf04d1b76e15d119f GIT binary patch literal 8992 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 literal 0 HcmV?d00001 diff --git a/struct/stff b/struct/stff new file mode 100755 index 0000000000000000000000000000000000000000..de4372784a1ac8ea9c10b399a4f029d1afecc810 GIT binary patch literal 9152 zcmeHNeQaA-6~DHVG+j5x-8z=FW3@&r+KqTln}&>u?m3Cumyx!iaknv+y*jp&m^pT2 zKX*w*N2_c_rt1i7piY25j7#m7WK@4o`>M0y^B9Ofcu-m~#z@Q+Z|5RMO&?t*}JqLii;> zc2w8J3#16XS0MY#Qo@pM0H+;hvop~zw`KwuiyT))Mp=m z`Pm15{)vb0z4y7F^^-mgC6AjB@CZQ-uhY>z z&6z&8X2eErGlrtclo-n<)8-KH*m%^4 znu+nG34yFs?O~&Rxo0T>;*;1PVTc{_jDeT64bE|ZnoO_h#l7Dh` z$^JGsei=*HBmPX8AQvp|2j}&&Dw)I%QYT(fSblX9E7dLDB4yBG(_YDGEvls>Em-~f& z*Nj;|e?)?(8fPt~;+EeatGNC-yqnf)NRd23nG178(E4AIOif&PM#{e+nYv^gp?m9nVP=vEh&GGWNPxll$5_sGBtJKpp-iy4^2Uq)cRUa;n`dD!i)OknX`S7 zp3^h_<(kk>pFGh>?DXknnwbAQ4F56Iw6^h1A_4o;r)z=2*ktDl^|PIo=2KYPx+xa4gGduv)N z24=1D4}N^1(Jw@PY`&_X&H84v6hRz??kJPQ-K&>f+7h7jehv#S{PKVFX0O&`kF|C`J~?g{ez_I^=9aN5~rtc{g-={m_Gcr?*k|>qpSP&1k26zb2Rer~miB|7s6R;k!t52R@TTV@j3+ zURV;6oSe==MCV&f_!=~s!l6jgI&9ZOa?b$g`_&qWmd{bEmE4HW9TDvZM6|aMy>+gb zA%4uQ5i8yK<~)|nXP+6jC1cx_#8=rBN^VwM?jb5oj1C}@@JS-#wSQbn<^7h=QkN)v zq+XLL#`~1a_2%+u?tp^6dj|7qGwaP;K{wwi|1s#K(=bI51a3QkMyh4Lznbu0Yx<5&yRz0th6|0_~Tcw}s`4Ex%7gf!}gu?mz#Wfn2eyZo; zPq2~u@zrzAt3%MQ6|eb<#Jz%Ut3>=Acoc~X(VsJFp75FeLFoIXX65V0OW?nh{wsA! z`liII*Zc36&@V25H%i@GH;{_o;cs z=ZP->Ux{c8?@M*c_WmXO{0O+O#<-}kk(|y%WzXML=LSY4>gnT0?A^n%v zqk_d-QlF(V--~|piPd7n;eRC#Bveo5{?iPc%B464(S&>p@mJ};#&;o>HFIWuXebav zxa|6_-9~Rue*}@fazM{8M~xVT^eE~U<n0%wRNS#LY}LXGHVkB9<8)OC`)iJn+#i z*R<7EGKP}rq!G<#qZ39VZDuFLP&PW6Fyi^q(FvH?BmlFt+#Z>J0V5BtK~M z7%-<>IpUATw%wr}VI#b=o8q0aOE`_-vk}&ng5JHmjZT;bh5eaqnhRLX+1@THi zhEj#m{i&Uy9X(wtZmDT9GKpv;#UNGOGM3BBZiD=9gRm47bvUUVNL5NI23i#%b@;GF zQyn?g-YIwUS2SaKe&hYAq?tg43UgK@G)3 zN0TwsA!CwzAk+l`beITWagSobs%_*yW^{hRmR9a}Hvpr%DBI6@G)MyX49NuFXDz9G?qc~?B5_IwX{ zQ8g4N9!Xq()?Xr?T$^ zC*u2$`~?8=afw>@f3k7f-vf;LmFh?2YtR&z3}4zxQr%Jl3rN}RgUUXr93CubS_%Fg zi1~dE`xDCkgtF)QvKy!T4Tn9S`(~8=Aa|^Cz~!>P2ORc%k6Wh#5Q?$79IKLm#CMfF z7sKbOpfaTOX(wm@{ScYde{9e9!ichu*o~2P+D|*|`TlrZ*_-6tM$Z0w3VHO?yjm`$ zdnW&$?d&h7{qwMGvf1-}w2_>Gocd1rFVLYXa`}93^}SE~zrmJUzVA_4jp^_OZR0}K%ewdez6_%MTb4#fBKX?*ONW49n0sC zAdK73=ij}`(5bJwgUy8p0AaxrVkOvqivwqS=5%l2vhAv`sg2`&R#ce|QI^ef-)?_Q h)xU#2PN2*2Y{J9s;r)-Md9CuFQ31yfIx?N*{}aP|l5_w7 literal 0 HcmV?d00001 diff --git a/struct/struct_func b/struct/struct_func new file mode 100755 index 0000000000000000000000000000000000000000..8541eba04debc9e9e2a892f8ac02d5ba9654f50c GIT binary patch literal 8768 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 + +struct Base { // public + int v1; +// public: //error + int v2; + //private: + int v3; + //void print(){ // c中不能在结构体中嵌入函数 + // printf("%s\n","hello world"); + //}; //error! +}; + +void Base(){ + printf("%s\n","I am Base func"); +} +//struct Base base1; //ok +//Base base2; //error + +int main() { + struct Base base; + base.v1=1; + //base.print(); + printf("%d\n",base.v1); + Base(); + return 0; +} diff --git a/struct/struct_func.cpp b/struct/struct_func.cpp new file mode 100644 index 0000000..09bef26 --- /dev/null +++ b/struct/struct_func.cpp @@ -0,0 +1,25 @@ +#include +#include + +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}; + +int main() { + struct Base base1; //ok + Base base2; //ok + Base base; + base.v1=1; + base.v3=2; + base.print(); + printf("%d\n",base.v1); + printf("%d\n",base.v3); + return 0; +} diff --git a/struct/struct_func_func.cpp b/struct/struct_func_func.cpp new file mode 100644 index 0000000..bce3749 --- /dev/null +++ b/struct/struct_func_func.cpp @@ -0,0 +1,39 @@ +#include +#include + +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}; + +typedef struct Base1 { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}B; +void Base(){ + printf("%s\n","I am Base func"); +} +//void B() {} //error! 符号 "B" 已经被定义为一个 "struct Base1" 的别名 +int main() { + struct Base base; //ok + //Base base1; // error! + base.v1=1; + base.v3=2; + base.print(); + printf("%d\n",base.v1); + printf("%d\n",base.v3); + Base(); + return 0; +} diff --git a/struct/stu b/struct/stu new file mode 100755 index 0000000000000000000000000000000000000000..6dabbe152c2f4faf6d091db222b375f2d752acfe GIT binary patch literal 9112 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 literal 0 HcmV?d00001 diff --git a/struct_class/README.md b/struct_class/README.md new file mode 100644 index 0000000..c8d304d --- /dev/null +++ b/struct_class/README.md @@ -0,0 +1,222 @@ +# 一文搞懂C和C++中struct + +## 1.C中struct + +- 在C中struct只单纯的用作数据的复合类型,也就是说,在结构体声明中只能将数据成员放在里面,而不能将函数放在里面。 +- 在C结构体声明中不能使用C++访问修饰符,如:public、protected、private 而在C++中可以使用。 +- 在C中定义结构体变量,如果使用了下面定义必须加struct。 +- C的结构体不能继承(没有这一概念)。 +- 若结构体的名字与函数名相同,可以正常运行且正常的调用!例如:可以定义与 struct Base 不冲突的 void Base() {}。 + +完整案例: + +```c +#include + +struct Base { // public + int v1; +// public: //error + int v2; + //private: + int v3; + //void print(){ // c中不能在结构体中嵌入函数 + // printf("%s\n","hello world"); + //}; //error! +}; + +void Base(){ + printf("%s\n","I am Base func"); +} +//struct Base base1; //ok +//Base base2; //error +int main() { + struct Base base; + base.v1=1; + //base.print(); + printf("%d\n",base.v1); + Base(); + return 0; +} +``` + +最后输出: + +``` +1 +I am Base func +``` + +完整代码见:[struct_func.c](./struct_func.c) + +## 2.C++中struct + +与C对比如下: + +- C++结构体中不仅可以定义数据,还可以定义函数。 +- C++结构体中可以使用访问修饰符,如:public、protected、private 。 +- C++结构体使用可以直接使用不带struct。 +- C++继承 +- 若结构体的名字与函数名相同,可以正常运行且正常的调用!但是定义结构体变量时候只用用带struct的! + +例如: + +> 情形1:不适用typedef定义结构体别名 + +未添加同名函数前: + +```c++ +struct Student { + +}; +Student(){} +Struct Student s; //ok +Srudent s; //ok +``` + +添加同名函数后: + +```c++ +struct Student { + +}; +Student(){} +Struct Student s; //ok +Srudent s; //error +``` + +> 情形二:使用typedef定义结构体别名 + +```c++ +typedef struct Base1 { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}B; +//void B() {} //error! 符号 "B" 已经被定义为一个 "struct Base1" 的别名 +``` + +> 前三种案例 + +```c++ +#include +#include + +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}; + +int main() { + struct Base base1; //ok + Base base2; //ok + Base base; + base.v1=1; + base.v3=2; + base.print(); + printf("%d\n",base.v1); + printf("%d\n",base.v3); + return 0; +} +``` + +完整代码见:[struct_func.cpp](struct_func.cpp) + +> 继承案例 + +```c++ +#include +#include +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + virtual void print(){ + printf("%s\n","Base"); + }; +}; +struct Derived:Base { + + public: + int v2; + void print(){ + printf("%s\n","Derived"); + }; +}; +int main() { + Base *b=new Derived(); + b->print(); + return 0; +} +``` + +完整代码见:[ext_struct_func.cpp](./ext_struct_func.cpp) + +> 同名函数 + +```c++ +#include +#include + +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}; + +typedef struct Base1 { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}B; +void Base(){ + printf("%s\n","I am Base func"); +} +//void B() {} //error! 符号 "B" 已经被定义为一个 "struct Base1" 的别名 +int main() { + struct Base base; //ok + //Base base1; // error! + base.v1=1; + base.v3=2; + base.print(); + printf("%d\n",base.v1); + printf("%d\n",base.v3); + Base(); + return 0; +} +``` +完整代码见:[struct_func_func.cpp](./struct_func_func.cpp) + +## 3.总结 + +### C和C++中的Struct区别 + +| C | C++ | +| ------------------------------------------------------ | ------------------------------------------------------------ | +| 不能将函数放在结构体声明 | 能将函数放在结构体声明 | +| 在C结构体声明中不能使用C++访问修饰符。 | public、protected、private 在C++中可以使用。 | +| 在C中定义结构体变量,如果使用了下面定义必须加struct。 | 可以不加struct | +| 结构体不能继承(没有这一概念)。 | 可以继承 | +| 若结构体的名字与函数名相同,可以正常运行且正常的调用! | 若结构体的名字与函数名相同,使用结构体,只能使用带struct定义! | \ No newline at end of file diff --git a/struct_class/ext b/struct_class/ext new file mode 100755 index 0000000000000000000000000000000000000000..d450b9f8ebe93e7a673deaa6071f30abb5bdd080 GIT binary patch literal 9616 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 +#include + +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + virtual void print(){ + printf("%s\n","Base"); + }; +}; + +struct Derived:Base { + + public: + int v2; + void print(){ + printf("%s\n","Derived"); + }; +}; + +int main() { + Base *b=new Derived(); + b->print(); + return 0; +} diff --git a/struct_class/sf b/struct_class/sf new file mode 100755 index 0000000000000000000000000000000000000000..321061d21e6b74b8b0d849adf04d1b76e15d119f GIT binary patch literal 8992 zcmeHMeQaA-6~DIg;jW$It}X4_X|-V8+D&;&x-_H=wbFO}PLX|k1#^x3hU#^BhM z{an(DL8o-ptbIi=K@lKT45T65^sNg@|sDq~djnWkMGl z#ciSqoJL%_ln}OCj2D$_#(t&e18%_8<+T}IUR^dA-)6JXgAE)ZVd}2}x@y|^=gVx8 zu@E82AUle6@n%T^M`eTYeicVlVYVZZ?A8UOI&f4r7++L@G3N2n*ytKk{)W6dD57;j zqF3H4m~;vDzHKF_y;?b1?bnG7+Qtz{3Bj1{9)cak`Eenr6bDs*OU;X4#m`s`SKOOU zjdph2n@+T*Q<=hK>tt7FYiEa+&uUxcxXC~1?%Xphd*XQvfs*3`rZqtFO9MOGUmj2W zc~1QH^qniNUbyS0x9=f+dX)U!up%X)9TD3s^hichav-SBef`3aL{U?^- z|6&RL=_UC0fgi%pVgJh=FQPq zKH1TqNm;$^eTRiv%kLpR;)>fL9V%Gp)QnHY%$Sv&Oj#gEs)C$|r7~h?q`$jo|92$$B|pa0Km5kijfI;+ z!gzAlYMjqY<~jcyNh?s=HVT!}rUdRS8+EjZ9w&v%7fXOmj}lEoy8ODN2Z^SsyF4rD zT}0E+E}xNfH_@kVX zuLYX_4h*l1wQTGa;^jv$z+t0xFOV^{7%+-&AKvgXxuRjM9GM|O=^~VmOaCKtG>S2e z=~qZTY&`K#>EP^j9~>CP1>@}egNEl-O^0GqC=(fz~TT&d}zaKS~~L z>sLs3hMv{@OBCtc*mU@j@WbI^DLfn=iafh%tSN-ac(yeIysy7_wZC{FvV{Wi8)rZA z&7c3MR5G4?&kD8wh379)d?!-8+6xb*)o&V8a~@;+yM=d*sdN6vM#5hTkAx3|&AI8y ze1C}bCH+BzmYN59q(2m!2z6tZhsFw-ICvX;_ZyJ;aXo`BUjV)aoB;j+qxlW65AnYV zycYNx@G$Ug7+D(l^T2Nc9|v9y8G+~MpzurvJsVau`=>q4LE_W9eHwo6CItoc^@X?t za?)S8Rw_kFHxS$rShuTX`B(kN#DnYazx%#BK22=W!Lk$@;#^6La3FZX+jDbM1RaAU zIgMi@N%HPM@Of`{VBK@R zzCh^NhVH=TXBv$_+leM4&^6V(JD}$RUEx4mIIy`p5P}}`y90hXZ!0i=d*R1E2g%tD zxG@7aX5hvQeDWE%*rZD*DZI}KW)&?7+;H?raAW$$B3NM~F^N|kfl8~y73J?%$)$WN zDqEaB(swz*dK(G9%BSdDCZIE#;NRCvS;8m1I-zpTcgAPa{Eap1wdtFL4S!X5xx(ud zmS?qU6QU0y33yKv@EJQPsmgn+SAR%!dp$T33HndEZy-uP*QRYW^BQpXqM!iBFa5El!zF ztQDNkRr9gi)PAn!-zxOF{Plv;4mbD&pH>wKor4YHeSE)H1D%5&Q5!#y3-*8y=j}l*bTozvs}V z`0r8Yy!=K6?~3B{`-IQiCFczS57y6_WjZV?uwL?O=aV$*#d)U;tag2Fmwsy3!+_LZ zRkIGGiqG#Wjwmnv)ULy)ad3x3?YjCJ^l!oZP}WSq=lk<$5TEO+cS|YqE9i$*+ljun z1pg)J->GT0Pe^|4zCOEz{-q`OKFJS=CKbQTq0mL6jK8+ujf(HCQ}u!$s#O_b@;U(~C{;7;Xkd$|1YRv_#fCn9h#I(q_WS=JIB&Fe&2Mi9_k6l}u=#-L}1>zLGhX%B0L#E*CpuCNoy< zh#1SoCX!~NFfnliCJxGkrd6eyw{nHJWl~i@iyu0K+TT7a(q)>dEUAL*Xg8^DA!kmf@C@Gpd2E)7i%)ULnRKk?A z!EMxs%|1gZ7`=mKCj&cn?CTpchr->FJ~FBbK2gn()lp&gesNEDcYhCLvK$%D7v$`K z{+~5es%h%FtXir{MPsf=03CovtQ zTEEU~CSq31uFYa5P#rEmheSSWj^ja6owzb(_MxZM2ZWzX_>?(1;q3<;R7VIFf-s8(TSBayXgG zV?|XFCSWOHnlf{ZNcp? z$DxL9ViT!2V#r$L9vqqi4U-}?Y|9C3HF*qt;v0Q0;3z7;NBBFK|2N~ji8~@)CwvA( zGcFuM5{A6G!V=Y-(R?1;Qq;N7aN1j5U5YH_@D52;Zf^Tth^`{H;r>s0b*X&PW#1^d zmHbbUVh9gd%P1oS;es%+1B#JsY{7mft( zpY54{98yy4w$&>6hBBB`d?LxlZT}p2G_MpN0q6UZ%AWIhTWa^kZNf!dPJ7N@PAU5+ zDLH`a1B_pQ%xN#0bX!{m#PPBVH~j;bJ%4`%mHk`f+yUG#vtC5Q*+17euF$3caGq~d zwd4N@1Z2<8kH33(qF1q@!s@Y>xj#e8Y0v)y^Z&z0k$m;d#?BR$tl3C@239-9SV{A=R7g^G3_tGmL4_RbG?KA z&%da~ua-kO9v;_8SO1)MF4CX??s%DI{4eM@<1go@sso*zIDqXKFGA+D=R8(d_8cd> zU^}L-qd`0#Kj*u9m7!Z-O$VC`$_I$oR_53Zw%_LBvpr+VAGmL)>VP^p=syl8xJcP| ndG9zBpHlHJs0VjDWLt6Zc<3x6p#52||4CKQ`;*JLyZ`?HS_2Ph literal 0 HcmV?d00001 diff --git a/struct_class/stff b/struct_class/stff new file mode 100755 index 0000000000000000000000000000000000000000..de4372784a1ac8ea9c10b399a4f029d1afecc810 GIT binary patch literal 9152 zcmeHNeQaA-6~DHVG+j5x-8z=FW3@&r+KqTln}&>u?m3Cumyx!iaknv+y*jp&m^pT2 zKX*w*N2_c_rt1i7piY25j7#m7WK@4o`>M0y^B9Ofcu-m~#z@Q+Z|5RMO&?t*}JqLii;> zc2w8J3#16XS0MY#Qo@pM0H+;hvop~zw`KwuiyT))Mp=m z`Pm15{)vb0z4y7F^^-mgC6AjB@CZQ-uhY>z z&6z&8X2eErGlrtclo-n<)8-KH*m%^4 znu+nG34yFs?O~&Rxo0T>;*;1PVTc{_jDeT64bE|ZnoO_h#l7Dh` z$^JGsei=*HBmPX8AQvp|2j}&&Dw)I%QYT(fSblX9E7dLDB4yBG(_YDGEvls>Em-~f& z*Nj;|e?)?(8fPt~;+EeatGNC-yqnf)NRd23nG178(E4AIOif&PM#{e+nYv^gp?m9nVP=vEh&GGWNPxll$5_sGBtJKpp-iy4^2Uq)cRUa;n`dD!i)OknX`S7 zp3^h_<(kk>pFGh>?DXknnwbAQ4F56Iw6^h1A_4o;r)z=2*ktDl^|PIo=2KYPx+xa4gGduv)N z24=1D4}N^1(Jw@PY`&_X&H84v6hRz??kJPQ-K&>f+7h7jehv#S{PKVFX0O&`kF|C`J~?g{ez_I^=9aN5~rtc{g-={m_Gcr?*k|>qpSP&1k26zb2Rer~miB|7s6R;k!t52R@TTV@j3+ zURV;6oSe==MCV&f_!=~s!l6jgI&9ZOa?b$g`_&qWmd{bEmE4HW9TDvZM6|aMy>+gb zA%4uQ5i8yK<~)|nXP+6jC1cx_#8=rBN^VwM?jb5oj1C}@@JS-#wSQbn<^7h=QkN)v zq+XLL#`~1a_2%+u?tp^6dj|7qGwaP;K{wwi|1s#K(=bI51a3QkMyh4Lznbu0Yx<5&yRz0th6|0_~Tcw}s`4Ex%7gf!}gu?mz#Wfn2eyZo; zPq2~u@zrzAt3%MQ6|eb<#Jz%Ut3>=Acoc~X(VsJFp75FeLFoIXX65V0OW?nh{wsA! z`liII*Zc36&@V25H%i@GH;{_o;cs z=ZP->Ux{c8?@M*c_WmXO{0O+O#<-}kk(|y%WzXML=LSY4>gnT0?A^n%v zqk_d-QlF(V--~|piPd7n;eRC#Bveo5{?iPc%B464(S&>p@mJ};#&;o>HFIWuXebav zxa|6_-9~Rue*}@fazM{8M~xVT^eE~U<n0%wRNS#LY}LXGHVkB9<8)OC`)iJn+#i z*R<7EGKP}rq!G<#qZ39VZDuFLP&PW6Fyi^q(FvH?BmlFt+#Z>J0V5BtK~M z7%-<>IpUATw%wr}VI#b=o8q0aOE`_-vk}&ng5JHmjZT;bh5eaqnhRLX+1@THi zhEj#m{i&Uy9X(wtZmDT9GKpv;#UNGOGM3BBZiD=9gRm47bvUUVNL5NI23i#%b@;GF zQyn?g-YIwUS2SaKe&hYAq?tg43UgK@G)3 zN0TwsA!CwzAk+l`beITWagSobs%_*yW^{hRmR9a}Hvpr%DBI6@G)MyX49NuFXDz9G?qc~?B5_IwX{ zQ8g4N9!Xq()?Xr?T$^ zC*u2$`~?8=afw>@f3k7f-vf;LmFh?2YtR&z3}4zxQr%Jl3rN}RgUUXr93CubS_%Fg zi1~dE`xDCkgtF)QvKy!T4Tn9S`(~8=Aa|^Cz~!>P2ORc%k6Wh#5Q?$79IKLm#CMfF z7sKbOpfaTOX(wm@{ScYde{9e9!ichu*o~2P+D|*|`TlrZ*_-6tM$Z0w3VHO?yjm`$ zdnW&$?d&h7{qwMGvf1-}w2_>Gocd1rFVLYXa`}93^}SE~zrmJUzVA_4jp^_OZR0}K%ewdez6_%MTb4#fBKX?*ONW49n0sC zAdK73=ij}`(5bJwgUy8p0AaxrVkOvqivwqS=5%l2vhAv`sg2`&R#ce|QI^ef-)?_Q h)xU#2PN2*2Y{J9s;r)-Md9CuFQ31yfIx?N*{}aP|l5_w7 literal 0 HcmV?d00001 diff --git a/struct_class/struct_func b/struct_class/struct_func new file mode 100755 index 0000000000000000000000000000000000000000..8541eba04debc9e9e2a892f8ac02d5ba9654f50c GIT binary patch literal 8768 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 + +struct Base { // public + int v1; +// public: //error + int v2; + //private: + int v3; + //void print(){ // c中不能在结构体中嵌入函数 + // printf("%s\n","hello world"); + //}; //error! +}; + +void Base(){ + printf("%s\n","I am Base func"); +} +//struct Base base1; //ok +//Base base2; //error + +int main() { + struct Base base; + base.v1=1; + //base.print(); + printf("%d\n",base.v1); + Base(); + return 0; +} diff --git a/struct_class/struct_func.cpp b/struct_class/struct_func.cpp new file mode 100644 index 0000000..09bef26 --- /dev/null +++ b/struct_class/struct_func.cpp @@ -0,0 +1,25 @@ +#include +#include + +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}; + +int main() { + struct Base base1; //ok + Base base2; //ok + Base base; + base.v1=1; + base.v3=2; + base.print(); + printf("%d\n",base.v1); + printf("%d\n",base.v3); + return 0; +} diff --git a/struct_class/struct_func_func.cpp b/struct_class/struct_func_func.cpp new file mode 100644 index 0000000..bce3749 --- /dev/null +++ b/struct_class/struct_func_func.cpp @@ -0,0 +1,39 @@ +#include +#include + +struct Base { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}; + +typedef struct Base1 { + int v1; +// private: //error! + int v3; + public: //显示声明public + int v2; + void print(){ + printf("%s\n","hello world"); + }; +}B; +void Base(){ + printf("%s\n","I am Base func"); +} +//void B() {} //error! 符号 "B" 已经被定义为一个 "struct Base1" 的别名 +int main() { + struct Base base; //ok + //Base base1; // error! + base.v1=1; + base.v3=2; + base.print(); + printf("%d\n",base.v1); + printf("%d\n",base.v3); + Base(); + return 0; +} diff --git a/struct_class/stu b/struct_class/stu new file mode 100755 index 0000000000000000000000000000000000000000..6dabbe152c2f4faf6d091db222b375f2d752acfe GIT binary patch literal 9112 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 literal 0 HcmV?d00001