Hello Alex.
Thu Nov 03 2005 15:24, Alex Mogilnikov wrote to me:
DT>>>> åÓÌÉ ÓÓÙÌËÁ ÎÅ ÕËÁÚÙ×ÁÅÔ ÎÁ ÓÕÝÅÓÔ×ÕÀÝÉÊ ÏÂßÅËÔ, ÜÔÏ ÄÏÌÖÎÏ DT>>>> ×ÏÓÐÒÉÎÉÍÁÔØÓÑ, ËÁË ÏÛÉÂËÁ.
DT>> nil/NULL Ñ ÏÔÍÅÎÉÔØ ÎÅ ÐÙÔÁÌÓÑ. é, ÄÕÍÁÀ, ÔÙ ÜÔÏ ÐÏÎÉÍÁÅÛØ. :)
AM> ñ ÎÅ ÐÏÎÑÌ ËÏÎËÒÅÔÎÏ ×ÙÛÅÏÔË×ÏÞÅÎÎÕÀ ÆÒÁÚÕ. þÔÏ ÚÁÎÞÉÔ "nil/NULL AM> ÄÏÌÖÎÏ ×ÏÓÐÒÉÎÉÍÁÔØÓÑ ËÁË ÏÛÉÂËÁ".
éÍÅÌÁÓØ × ×ÉÄÕ ÓÓÙÌËÁ, ÎÅ ÒÁ×ÎÁÑ nil, ÎÏ ÎÅ ÕËÁÚÙ×ÁÀÝÁÑ ÎÁ ÓÕÝÅÓÔ×ÕÀÝÉÊ ÏÂßÅËÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÔÉÐÁ. Stray pointer, ËÁÖÅÔÓÑ.
DT>> ÷ӣ ÏÞÅÎØ ÐÒÏÓÔÏ:
DT>> 1) nil ÎÅ ÒÁÚÙÍÅÎÏ×Ù×ÁÅÔÓÑ, runtume-ÐÒÏ×ÅÒËÁ;
AM> üÔÏ ÔÏÌØËÏ ÐÏÌ-ÄÅÌÁ. éÚ ×ÓÔÒÅÞÁÅÍÙÈ ÍÎÏÊ ÎÁ ÐÒÁËÔÉËÅ ÏÛÉÂÏË AM> ÏÂÒÁÝÅÎÉÅ ÐÏ null pointer ×ÓÔÒÅÞÁÀÔÓÑ ÒÅÖÅ, ÞÅÍ ÏÂÒÁÝÅÎÉÑ ÐÏ AM> ÎÅÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÎÙÍ ÕËÁÚÁÔÅÌÑÍ. óÔÁÌÏ ÂÙÔØ, ÔÒÅÂÕÅÍ ÅÝÅ É AM> ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÎÅÓÔÁÔÉÞÅÓËÉÈ ÕËÁÚÁÔÅÌÅÊ?
á ÐÏÞÅÍÕ ÂÙ É ÎÅÔ? HÅ ÔÁËÏÊ ÕÖ ÂÏÌØÛÏÊ Ï×ÅÒÈÅÄ. ÷ÐÒÏÞÅÍ, ÔÁËÉÅ ×ÅÝÉ ÕÍÅÅÔ ÌÏ×ÉÔØ É ËÏÍÐÉÌÑÔÏÒ.
DT>> 2) Õ ÕËÁÚÁÔÅÌÑ ÄÏÌÖÅÎ ÂÙÔØ ÔÉÐ É ÔÉÐ ÜÔÏÔ ÄÏÌÖÅÎ ÐÒÏ×ÅÒÑÔØÓÑ;
AM> âÅÓÓÐÏÒÎÏ.
DT>> 3) ÎÅ ÄÏÌÖÎÏ ÂÙÔØ "ÁÄÒÅÓÎÏÊ ÁÒÉÆÍÅÔÉËÉ" ËÒÏÍÅ ÐÒÉÓ×ÁÉ×ÁÎÉÑ ÕËÁÚÁÔÅÌÀ DT>> ÚÎÁÞÅÎÉÑ É ÓÒÁ×ÎÅÎÉÑ ÕËÁÚÁÔÅÌÅÊ;
AM> þÅÍ ÍÅÛÁÅÔ ÁÄÒÅÓÎÁÑ ÁÒÉÆÍÅÔÉËÁ? ëÔÏ ÚÁÓÔÁ×ÌÑÅÔ ÅÅ ÉÓÐÏÌØÚÏ×ÁÔØ?
HÅËÏÔÏÒÙÅ ×ÅÝÉ ÎÅ ÎÁÄÏ ÚÁÓÔÁ×ÌÑÔØ ÄÅÌÁÔØ, Á ÎÁÄÏ ÚÁÐÒÅÝÁÔØ. :) íÙ ×ÅÄØ ÄÏÇÏ×ÏÒÉÌÉÓØ, ÞÔÏ ÕËÁÚÁÔÅÌØ ÎÕÖÅÎ ÄÌÑ ÒÁÂÏÔÙ Ó ÄÉÎÁÍÉÞÅÓËÉÍÉ ÏÂßÅËÔÁÍÉ. á ÄÌÑ ÉÎÄÅËÓÁÃÉÉ, ÎÁÐÒÉÍÅÒ, ÍÁÓÓÉ×Á ÅÓÔØ ÄÒÕÇÉÅ ÓÒÅÄÓÔ×Á ÑÚÙËÁ.
DT>> 4) ÕËÁÚÁÔÅÌÀ ÍÏÖÎÏ ÐÒÉÓ×ÏÉÔØ ÚÎÁÞÅÎÉÅ DT>> nil, ÚÎÁÞÅÎÉÅ, ×ÏÚ×ÒÁÝÁÅÍÏÅ ÏÐÅÒÁÔÏÒÏÍ new É ÚÎÁÞÅÎÉÅ "ÁÄÒÅÓÁ" DT>> ÓÕÝÅÓÔ×ÕÀÝÅÇÏ ÏÂßÅËÔÁ (&var);
AM> òÅÚÏÎÎÏ, ÅÓÌÉ ÐÒÉÎÑÔØ Ð. 3.
DT>> 5) ÐÒÉ ÕÎÉÞÔÏÖÅÎÉÉ ÏÂßÅËÔÁ ×ÓÅÍ DT>> ÕËÁÚÁÔÅÌÑÍ ÎÁ ÜÔÏÔ ÏÂßÅËÔ ÄÏÌÖÎÏ Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÒÉÓ×ÁÉ×ÁÔØÓÑ ÚÎÁÞÅÎÉÅ DT>> nil. ëÏÎÅÞÎÏ, ÔÒÅÂÕÅÔ ÒÁÎÔÁÊÍ-ÐÏÄÄÅÒÖËÉ, ÎÏ ÏÞÅÎØ ÓÕÝÅÓÔ×ÅÎÎÏ.
AM> ôÙ ÐÒÅÄÓÔÁ×ÌÑÅÛØ, ËÁËÕÀ ÃÅÎÕ ÚÁ ÜÔÏ ÐÒÉÄÅÔÓÑ ÐÌÁÔÉÔØ? üÔÏ ÐÏÌÕÞÁÅÔÓÑ, AM> ÞÔÏ _ËÁÖÄÙÊ_ ÏÂßÅËÔ ÄÏÌÖÅÎ ËÒÏÍÅ Ó×ÏÅÇÏ ÚÎÁÞÅÎÉÑ ÈÒÁÎÉÔØ ÄÉÎÁÍÉÞÅÓËÉ AM> ÉÚÍÅÎÑÅÍÙÊ ÓÐÉÓÏË ÕËÁÚÁÔÅÌÅÊ, ËÏÔÏÒÙÅ ÎÁ ÎÅÇÏ ÕËÁÚÙ×ÁÀÔ.
÷Ï-ÐÅÒ×ÙÈ, ÎÅ ËÁÖÄÙÊ, Á ÔÏÌØËÏ ÄÉÎÁÍÉÞÅÓËÉÅ ÉÌÉ Á×ÔÏÍÁÔÉÞÅÓËÉÅ ÏÂßÅËÔÙ. íÏÖÎÏ ÚÁÐÒÅÔÉÔØ ×ÚÑÔÉÅ ÁÄÒÅÓÁ Á×ÔÏÍÁÔÉÞÅÓËÉÈ ÏÂßÅËÔÏ×, ÜÔÏ ÓÉÌØÎÏ ÕÐÒÏÓÔÉÔ ÚÁÄÁÞÕ, Á ÎÅ ÔÅÒÑÅÍ ÍÙ ÎÉÞÅÇÏ. ÷Ï-×ÔÏÒÙÈ, ÚÁ×ÏÄÉÔØ ÔÁËÏÊ ÓÐÉÓÏË ÎÁÄÏ ÔÏÌØËÏ ÐÏ ÆÁËÔÕ ÐÒÉÓ×ÁÉ×ÁÎÉÑ ÁÄÒÅÓÁ ÏÂßÅËÔÁ ÐÅÒÅÍÅÎÎÏÊ ÓÓÙÌÏÞÎÏÇÏ ÔÉÐÁ.
÷ áÄÅ ÅÓÔØ ÄÁÖÅ ÓÐÅÃÉÁÌØÎÏÅ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï - aliased - ÄÌÑ ÎÅ-ÄÉÎÁÍÉÞÅÓËÉÈ ÏÂßÅËÔÏ×, ÎÁ ËÏÔÏÒÙÅ
_ÍÏÇÕÔ_ ÕËÁÚÙ×ÁÔØ ÓÓÙÌËÉ.
äÕÍÁÀ, ÄÌÑ ÓÉÓÔÅÍ ËÌÁÓÓÁ PC ÜÔÏ ÓÏ×ÓÅÍ ÎÅÂÏÌØÛÁÑ ÃÅÎÁ. ó ÕޣÔÏÍ ÍÏÎÓÔÒÏÉÄÁÌØÎÏÓÔÉ ÔÅÐÅÒÅÛÎÅÇÏ ÓÏÆÔÁ. HÕ Á ÄÌÑ ÍÅÌËÉÈ ×ÓÔÒÏÅÎÎÙÈ ÓÉÓÔÅÍ ÜÔÏ, ËÏÎÅÞÎÏ, ÐÏËÁ ÒÁÎÏ×ÁÔÏ. ôÕÔ É C++ ÓÌÉÛËÏÍ ÍÎÏÇÏ. :)
DT>> :) ôÏÌØËÏ Ó ÔÁËÉÍ ÕÓÌÏ×ÉÅÍ: DT>> int f(TObject * const z) DT>> ôÏ ÅÓÔØ ÄÏÌÖÎÏ ÂÙÔØ ÚÁÐÒÅÝÅÎÏ ÍÅÎÑÔØ ÚÎÁÞÅÎÉÅ z × ÔÅÌÅ ÆÕÎËÃÉÉ.
AM> ðÏÞÅÍÕ? áÒÇÕÍÅÎÔÉÒÕÊ, ÐÏÖÁÌÕÊÓÔÁ.
âÅÚÏÐÁÓÎÏÓÔØ. é, × ÏÂÝÅÍ ÓÌÕÞÁÅ, ÓÏÏÔ×ÅÔÓÔ×ÉÅ ÐÁÒÁÄÉÇÍÅ, ÏÐÉÓÁÎÎÏÊ ×ÙÛÅ: ÕËÁÚÁÔÅÌÉ - ÎÅÂÅÚÏÐÁÓÎÏÅ ÓÒÅÄÓÔ×Ï, É ÄÏÌÖÎÙ ÐÒÉÍÅÎÑÔØÓÑ Ó ÐÒÅÄÏÓÔÏÒÏÖÎÏÓÔÑÍÉ É ÔÏÌØËÏ ÔÁÍ, ÇÄÅ ÂÅÚ ÎÉÈ ÎÅÌØÚÑ ÏÂÏÊÔÉÓØ. ëÏÎËÒÅÔÎÏ - ÐÒÉ ÒÁÂÏÔÅ Ó ÄÉÎÁÍÉÞÅÓËÉÍÉ ÏÂßÅËÔÁÍÉ. ñ ÓÏÇÌÁÓÉÌÓÑ Ó ÔÏÂÏÊ, ÞÔÏ ÌÕÞÛÅ ÐÅÒÅÄÁ×ÁÔØ ÏÂßÅËÔÙ, ËÏÔÏÒÙÅ ÍÙ ÓÏÂÉÒÁÅÍÓÑ ÍÅÎÑÔØ ÉÚ ÔÅÌÁ ÆÕÎËÃÉÉ, ÐÏ ÕËÁÚÁÔÅÌÀ - ÎÏ ÔÏÌØËÏ ÐÏÔÏÍÕ, ÞÔÏ ÜÔÏ ÏÂÅÓÐÅÞÉ×ÁÅÔ ÉÚÂÙÔÏÞÎÏÓÔØ ÓÉÎÔÁËÓÉÓÁ: ÍÙ ×ÉÄÉÍ, ÞÔÏ ÜÔÏÔ ÐÁÒÁÍÅÔÒ ÄÏÐÕÓËÁÅÔ ÉÚÍÅÎÅÎÉÅ ÆÁËÔÉÞÅÓËÏÇÏ ÁÒÇÕÍÅÎÔÁ, Á ×ÏÔ ÜÔÏÔ - ÎÅÔ. HÏ ÓÁÍ ÕËÁÚÁÔÅÌØ ÄÏÌÖÅÎ ÐÒÉ ÜÔÏÍ ÂÙÔØ ÍÁËÓÉÍÁÌØÎÏ ÐÏÈÏÖ ÎÁ ÓÉÛÎÕÀ ÓÓÙÌËÕ. :)
DT>> á Åݣ ÈÏÒÏÛÁÑ ÆÉÞÁ ÅÓÔØ × ÍÁÔÌÁÂÏ×ÓËÏÍ M-ÑÚÙËÅ: DT>> function [x, y, z] = SomeFunction (a, b, c) DT>> é ÎÅ ÎÁÄÏ ÎÉËÁËÏÊ ÐÅÒÅÄÁÞÉ ÐÏ ÓÓÙÌËÅ. :)
AM> á ÞÔÏ ÜÔÁ ÆÉÞÁ ÄÅÌÁÅÔ?
á ×ÏÚ×ÒÁÝÁÅÔ ÎÅÓËÏÌØËÏ ÒÅÚÕÌØÔÁÔÏ× ÉÚ ÆÕÎËÃÉÉ. ÷ áÄÅ, ËÓÔÁÔÉ, ÔÏÖÅ ÅÓÔØ ÔÁËÏÅ
- ÁÇÒÅÇÁÔÙ. M-ÑÚÙË, ËÓÔÁÔÉ, ÚÁÂÁ×ÎÁÑ ×ÅÝØ. ÷ÓÅ ÏÂßÅËÔÙ ÔÁÍ ÐÏ ÕÍÏÌÞÁÎÉÀ - ÍÁÔÒÉÃÙ, É ÄÁÖÅ ÓËÁÌÑÒ - ÜÔÏ ÍÁÔÒÉÃÁ ÒÁÚÍÅÒÏÍ 1x1. :) áÒÉÆÍÅÔÉÞÅÓËÉÅ ÏÐÅÒÁÃÉÉ ÔÏÖÅ ÍÏÖÎÏ ÐÒÏÉÚ×ÏÄÉÔØ ÎÁÄ ÍÁÔÒÉÃÅÊ ÃÅÌÉËÏÍ.
Dimmy.