рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрдХреЗрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд ...

рдкрд░рд┐рдЪрдп


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭрд╕реЗ рдкреНрд░рд╢реНрди рдХрд┐рдпрд╛, "рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?"

extern "C" { void byteMaskDowngrade(byte***const byteMask, const byte *const *const && source) { // - . } //  . } 

рдпрд╣ рд╕рд╣рдХрд░реНрдореА рдореЗрд░рд╛ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рд╣рдХрд░реНрдореА рдерд╛ рдФрд░ рд╣рдореЗрдВ рддреБрд░рдВрдд рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ (рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЗрд╕ рддрд░рд╣ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ: рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдореЗрдВ)ред

рдФрд░ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ рдореЗрдВ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЗрд╕реЗ рдПрдХ рдзреЛрдЦрд╛ рдкрддреНрд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛, рдЕрд░реНрдерд╛рддреН рджреЛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░:

  1. рдРрд╕реЗ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдпрд╣рд╛рдБ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ?
  2. рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдП?

"*"


рдПрдХ рддрд╛рд░рд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдорд╛рдорд▓рд╛ рд╕рдмрд╕реЗ рдЖрдо рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрд▓рддрдлрд╣рдореА рдпрд╣рд╛рдВ рднреА рд╕рдВрднрд╡ рд╣реИ:

  • рдХреИрд╕реЗ рдХрд░реЗрдВ:

    • рдЗрд╕рд▓рд┐рдП:

       const byte p; 
    • рдпрд╛ рддреЛ:

       byte const p; 

  • рдпрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ '*' рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ:

    • рдЗрд╕рд▓рд┐рдП:

       byte *const p; 
    • рдпрд╛ рддреЛ:

       const byte *p; 

рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рдирд╛, рд╕рдВрдХрд▓рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдПрдХ рддрд╛рд░рд╛рдВрдХрди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдПрдХ рдХрд┐рдирд╛рд░реЗ рдкреНрд░рд╢реНрди рдмрдирддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдЕрдВрддрд┐рдо рдЕрд░реНрде рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред рдЙрдкрд░реЛрдХреНрдд рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рд╕реНрдЯ рд╕реНрдкреЗрд╕рд┐рдпрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдерд┐рддрд┐ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдмрджрд▓рддреА рд╣реИ рдЬрдм рд╕рдВрдХреЗрдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ: рдПрдХ, рджреЛ, рддреАрди ... рдареАрдХ рд╣реИ, рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ:

 void p() { //   . byte * a = new byte{1}; a++; // . a[0]++; // . //    . const byte * b = new byte{1}; b++; // . //b[0]++; // . //    . byte *const c = new byte{1}; //c++; // . c[0]++; // . //     . const byte *const d = new byte{1}; //d++; // . //d[0]++; // . } 

рдпрд╣ рд╕рдм рддрдм рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рджреВрд╕рд░рд╛ рдкреЙрдЗрдВрдЯрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ (рдпрд╣рд╛рдБ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрд╢рд▓ рдкрдврд╝рдиреЗ рдХрд╛ рдирд┐рдпрдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ):

 void pp() { //     . byte ** a = new byte * { new byte{1} }; a++; // . a[0]++; // . a[0][0]++; // . //      . const byte ** b = new const byte * { new byte{1}}; b++; // . b[0]++; // . //b[0][0]++; // . //      . byte *const * c = new byte * { new byte{1}}; c++; // . //c[0]++; // . c[0][0]++; // . //      . byte * *const d = new byte * { new byte{1}}; //d++; // . d[0]++; // . d[0][0]++; // . //       . const byte *const * e = new const byte *const { new byte{1}}; e++; // . //e[0]++; // . //e[0][0]++; // . //       . const byte * *const f = new const byte * { new byte{1}}; //f++; // . f[0]++; // . //f[0][0]++; // . //       . byte *const *const g = new byte *const { new byte{1}}; //g++; // . //g[0]++; // . g[0][0]++; // . //        . const byte *const *const h = new const byte *const { new byte{1}}; //h++; // . //h[0]++; // . //h[0][0]++; // . } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдбрдмрд▓ рдкреЙрдЗрдВрдЯрд░ рдХреЛ 8 рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖реНрдп рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рддрд░рд╣ рдХреЗ рднрд╛рд╡ рдкрдврд╝рдиреЗ рдХреЗ рдирд┐рдпрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  • рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ '=' тАЛтАЛрдЪрд┐рд╣реНрди рджреЗрдЦреЗрдВ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рджрд╛рдИрдВ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдкрдврд╝реЗрдВ;
  • рдЪрд░ рдХрд╛ рдирд╛рдо рдЫреЛрдбрд╝реЗрдВ;
  • рдЖрдЧреЗ рдХреА рдмреИрдардХ рдпрд╛ рддреЛ '*', рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реВрдЪрдХ, рдпрд╛ '* рдХрд╛рд╕реНрдЯ' - рдПрдХ рд╕реНрдерд┐рд░ рд╕реВрдЪрдХ;
  • рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рддрдм рддрдХ рдкрдврд╝рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ (рдмрд╛рдЗрдЯ) рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛;
  • рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдЕрдВрддрд┐рдо рд╢рдмреНрдж рдХрд╛рд╕реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдирд┐рд░реНрдорд╛рдг рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдпрджрд┐ рдХрдмреНрдЬ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред

рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХрд╛ рдпрд╣ рд░реВрдк рд╕рдмрд╕реЗ рдкрд░рд┐рд╖реНрдХреГрдд рднрд╛рд╡реЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ)

рдпрд╣рд╛рдВ рдЯреНрд░рд┐рдкрд▓ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рд╛рде рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреВрд░реНрдг рд╕реЗрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

"***"


 void ppp() { //       . byte *** a = new byte * * { new byte * {new byte{1}} }; a++; // . a[0]++; // . a[0][0]++; // . a[0][0][0]++; // . //        . const byte *** b = new const byte * * { new const byte * {new byte{1}} }; b++; // . b[0]++; // . b[0][0]++; // . //b[0][0][0]++; // . //        . byte*const * * c = new byte *const * { new byte *const {new byte{1}} }; c++; // . c[0]++; // . //c[0][0]++; // . c[0][0][0]++; // . //        . byte * *const * d = new byte * *const { new byte * {new byte{1}} }; d++; // . //d[0]++; // . d[0][0]++; // . d[0][0][0]++; // . //        . byte *** const e = new byte * * { new byte * {new byte{1}} }; //e++; // . e[0]++; // . e[0][0]++; // . e[0][0][0]++; // . //         . const byte *const * * f = new const byte *const * { new const byte *const {new byte{1}} }; f++; // . f[0]++; // . //f[0][0]++; // . //f[0][0][0]++; // . //         . const byte * *const * g = new const byte * *const{ new const byte * {new byte{1}} }; g++; // . //g[0]++; // . g[0][0]++; // . //g[0][0][0]++; // . //         . const byte * * *const h = new const byte * *{ new const byte * {new byte{1}}}; //h++; // . h[0]++; // . h[0][0]++; // . //h[0][0][0]++; // . //         . byte *const * *const i = new byte *const * { new byte *const {new byte{1}}}; //i++; // . i[0]++; // . //i[0][0]++; // . i[0][0][0]++; // . //         . byte * *const *const j = new byte * *const { new byte * {new byte{1}}}; //j++; // . //j[0]++; // . j[0][0]++; // . j[0][0][0]++; // . //         . byte *const *const * k = new byte *const *const {new byte *const{new byte{1}}}; k++; // . //k[0]++; // . //k[0][0]++; // . k[0][0][0]++; // . //           const //           . const byte *const *const *const m = new const byte *const *const {new const byte *const {new byte{1}}}; //m++; // . //m[0]++; // . //m[0][0]++; // . //m[0][0][0]++; // . } 

Source: https://habr.com/ru/post/hi468605/


All Articles