锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓庡湪鍓嶉潰:++(--)鏈夊お澶氳浜哄洶鎯戠殑鍦版柟,(i++)+(i++)涓?++i)+(++i)鏈変粈涔堜笉鍚?涓轟粈涔堜笉鍚?濡傛灉浠庢満鍣ㄧ殑瑙掑害鍘葷悊瑙o紝灝變細璞佺劧寮鏈椼?/p>
鍏堟潵鐪嬫紼嬪簭: (1)鍦╒C 6.0涓嬶細 瀵逛簬(i++)+(i++): 緇撴灉錛歩=5,j=6鐩稿簲鐨勬眹緙栦唬鐮佷負錛?/p>
(3)濡傛灉榪欐浠g爜鐢╦ava瀹炵幇錛岀粨鏋滀細鎬庢牱鍛紵 紼嬪簭: 瀵逛簬(++i)+(++i): 瀵逛簬(i++)+(i++): Java涓嶸C/gcc涓轟粈涔堜細鏈夊姝ょ殑鍖哄埆鍛紵鍏跺疄鍘熷洜寰堢畝鍗曪紝VC/gcc鐢熸垚鐨勬槸鏈湴浠g爜錛岃孹86澶勭悊鍣ㄦ槸鍩轟簬瀵勫瓨鍣ㄧ殑鏋舵瀯錛屼篃灝辨槸濡傛灉瀹冭榪涜浜嗕袱涓暟鐩稿姞錛屽畠浼氬厛鎶婁袱涓暟縐誨埌瀵勫瓨鍣紝鍐嶈繘琛屽姞娉曡繍綆椼傝孞ava铏氭嫙鏈烘槸涓縐嶅熀浜庢爤鐨勬灦鏋勶紝濡傛灉瀹冭榪涜涓や釜鏁扮浉鍔狅紝瀹冧細鍏堝脊鍑轟袱涓暟錛屽啀榪涜鍔犳硶榪愮畻錛屽啀灝嗙粨鏋滃叆鏍堛?/p> 涓緇存暟緇勭殑鍚嶅瓧澶ч儴鍒嗘儏鍐典笅鍙互褰撴垚涓涓父鎸囬拡鏉ョ湅錛屼篃灝辨槸璇達細 鍒欐暟緇勫悕a鍙互鍦ㄥぇ閮ㄥ垎p鑳界敤鐨勫湴鏂逛嬌鐢紝鏈変袱縐嶆儏鍐墊瘮杈冪壒孌婏細 鍦ㄥ唴瀛樻帓甯冧笂錛屼竴緇存暟緇勫拰涓闃舵寚閽堟寚鍚戠殑鍐呭瓨鏄畬鍏ㄤ竴鏍風殑銆?/p> 瀵逛簬楂樼淮鏁扮粍錛堜互浜岀淮涓轟緥錛屽叾浠栧畬鍏ㄤ竴鏍鳳級錛屾儏鍐靛拰涓緇存暟緇勫畬鍏ㄤ笉涓鏍楓備緥濡傚浜庢暟緇勫拰鎸囬拡錛?/p> 浠栦滑灝辨病鏈変換浣曞彲姣旀с傚垵瀛﹁呬粠涓緇存暟緇勪腑鐨勭煡璇嗙畝鍗曠殑鎺ㄦ柇鍑篴鏄竴涓瓑浠蜂簬int**鐨勪笢瑗匡紝*a灝卞彲浠ュ緱鍒頒竴涓?int*鐨勫鹼紝榪欏叾瀹炴槸瀹屽叏閿欒鐨勩?/p> 浠庡唴瀛樻帓甯冧笂錛屾暟緇勬寜鐓у厛浣庣淮鍚庨珮緇寸殑欏哄簭涓嬈℃帓鍒楁暟緇勭殑姣忎釜鍏冪礌銆傚叾涓綆緇村埌楂樼淮鏄寚瀹氫箟鏁扮粍鏃訛紝紱繪暟緇勫悕瓚婅繎鐨勭淮涓轟綆緇達紝鍙嶄箣涓洪珮緇達紝渚嬪涓婇潰榪欎釜鏁扮粍錛?灝辨槸浣庣淮鐨勭淮鏁幫紝4涓洪珮緇寸殑緇存暟錛屽洜姝わ紝鍦ㄥ唴瀛樹腑錛屼笂闈㈣繖涓暟緇勫崰鏈?2涓猧nt鍗曞厓錛屾墍鏈夊崟鍏冮潬鍦ㄤ竴璧鳳紝鍏墮『搴忓垯涓?/p> 濡傛灉a鏄竴涓拰浜岄樁鎸囬拡絳変環鐨勫父閲忥紝閭d箞浠栫殑鍊煎簲璇ユ寚鍚戜竴涓寚閽堟暟緇勬墠瀵癸紝鑰屽疄闄呬笂榪欐牱鐨勬寚閽堟暟緇勬槸涓嶅瓨鍦ㄣ?/p> 浠庡墠闈㈣繖涓帓甯冭繕鍙互鐪嬪嚭涓涓棶棰橈紝鍦ㄦ帓鍒楄繃紼嬩腑錛屾暟緇勭殑鏈浣庣淮涓嶇‘瀹氭槸娌℃湁鍏崇郴鐨勶紝浣嗘槸涓轟簡瀹夋帓濂芥暟緇勫厓绱犵殑鍏堝悗欏哄簭錛岄珮緇寸殑緇存暟蹇呴』紜畾錛屼篃灝辨槸璇村湪浣跨敤鏁扮粍綾誨瀷鏉ュ畾涔夋寚閽堟椂錛屽繀欏婚鍏堢‘瀹氶珮緇達紝渚嬪錛?/p> 鏄彲浠ョ殑錛屼絾鏄?/p> 灝變笉琛屻?/p> 浠旂粏鑰冭檻涓緇存暟緇勫拰澶氱淮鏁扮粍錛屾槸涓嶆槸緙栬瘧鍣ㄥ涓緇存暟緇勭壒孌婂鐞嗕簡錛熷叾瀹炰篃涓嶆槸錛屾暟緇勫悕鍏跺疄浠h〃鐨勬槸鏁扮粍瀵硅薄涔熷氨鏄叾絎竴涓厓绱犵殑鍦板潃錛屼粠榪欎釜瑙掑害璁詫紝涓緇存暟緇勫悕a浠h〃浜哸[0]鐨勫湴鍧錛屼簩緇存暟緇勫悕a浠h〃浜哸[0][0]鐨勫湴鍧錛岄珮緇存暟緇勭殑鍚嶅瓧浠庤繖涓剰涔夎鏇存帴榪?闃舵寚閽? 浠婂ぉ鍐欑▼搴忕殑鏃跺欒鐢ㄥ埌浜岀淮鏁扮粍浣滃弬鏁頒紶緇欎竴涓嚱鏁幫紝鎴戝彂鐜板皢浜岀淮鏁扮粍浣滃弬鏁拌繘琛屼紶閫掕繕涓嶆槸鎯寵薄寰楅偅涔堢畝鍗曪紝浣嗘槸鏈鍚庢垜涔熻В鍐充簡閬囧埌鐨勯棶棰橈紝鎵浠ヨ繖綃囨枃绔犱富瑕佷粙緇嶅浣曞鐞嗕簩緇存暟緇勫綋浣滃弬鏁頒紶閫掔殑鎯呭喌錛屽笇鏈涘ぇ瀹朵笉鑷充簬鍐嶅湪榪欎笂闈㈡氮璐規椂闂淬?/span> 涓嬫枃鏄垜浠庝簰鑱旂綉涓奷ownload鐨勪竴綃囨枃绔狅紝璁茬殑寰堝ソ錛屼絾鏄垜鍚庨潰灝嗘寚鍑洪棶棰樻墍鍦紝騫跺姞浠ユ敼榪涳紝甯屾湜瀵逛綘鏈夋墍甯姪錛?/span> 棣栧厛錛屾垜寮曠敤浜嗚礙嫻╁己鍏堢敓緙栬憲鐨勩?span style="line-height: 34px; ">C [鍘熸枃寮濮?span style="line-height: 34px; ">] 鍙互鐢ㄤ簩緇存暟緇勫悕浣滀負瀹炲弬鎴栬呭艦鍙傦紝鍦ㄨ璋冪敤鍑芥暟涓褰㈠弬鏁扮粍瀹氫箟鏃跺彲浠ユ寚瀹氭墍鏈夌淮鏁扮殑澶у皬錛?span style="line-height: 34px; ">涔熷彲浠ョ渷鐣ョ涓緇寸殑澶у皬璇存槑錛屽錛?/span> void Func(int array[3][10]); void Func(int array[][10]); 浜岃呴兘鏄悎娉曡屼笖絳変環錛?span style="line-height: 34px; ">浣嗘槸涓嶈兘鎶婄浜岀淮鎴栬呮洿楂樼淮鐨勫ぇ灝忕渷鐣?/span>錛屽涓嬮潰鐨勫畾涔夋槸涓嶅悎娉曠殑錛?/span> void Func(int array[][]); 鍥犱負浠庡疄鍙備紶閫掓潵鐨勬槸鏁扮粍鐨勮搗濮嬪湴鍧錛屽湪鍐呭瓨涓寜鏁扮粍鎺掑垪瑙勫垯瀛樻斁(鎸夎瀛樻斁)錛岃屽茍涓嶅尯鍒嗚鍜屽垪錛屽鏋滃湪褰㈠弬涓笉璇存槑鍒楁暟錛屽垯緋葷粺鏃犳硶鍐沖畾搴斾負澶氬皯琛屽灝戝垪錛?span style="line-height: 34px; ">涓嶈兘鍙寚瀹氫竴緇磋屼笉鎸囧畾絎簩緇達紝涓嬮潰鍐欐硶鏄敊璇殑錛?/span> void Func(int array[3][]);瀹炲弬鏁扮粍緇存暟鍙互澶т簬褰㈠弬鏁扮粍錛屼緥濡傚疄鍙傛暟緇勫畾涔変負錛?/span> void Func(int array[3][10]); 鑰屽艦鍙傛暟緇勫畾涔変負錛?/span> int array[5][10]; 榪欐椂褰㈠弬鏁扮粍鍙彇瀹炲弬鏁扮粍鐨勪竴閮ㄥ垎錛屽叾浣欓儴鍒嗕笉璧蜂綔鐢ㄣ?/span> [鍘熸枃緇撴潫] 澶у鍙互鐪嬪埌錛屽皢浜岀淮鏁扮粍褰撲綔鍙傛暟鐨勬椂鍊欙紝蹇呴』鎸囨槑鎵鏈夌淮鏁板ぇ灝忔垨鑰呯渷鐣ョ涓緇寸殑錛屼絾鏄笉鑳界渷鐣ョ浜岀淮鎴栬呮洿楂樼淮鐨勫ぇ灝忥紝榪欐槸鐢辯紪璇戝櫒鍘熺悊闄愬埗鐨勩傚ぇ瀹跺湪瀛︾紪璇戝師鐞嗚繖涔堣紼嬬殑鏃跺欑煡閬撶紪璇戝櫒鏄繖鏍峰鐞嗘暟緇勭殑錛?/span> 瀵逛簬鏁扮粍 int p[m][n]; 濡傛灉瑕佸彇p[i][j]鐨勫?span style="line-height: 34px; ">(i>=0 && i<m && 0<=j && j < n)錛岀紪璇戝櫒鏄繖鏍峰鍧鐨勶紝瀹冪殑鍦板潃涓猴細 p + i*n + j; 浠庝互涓婂彲浠ョ湅鍑猴紝濡傛灉鎴戜滑鐪佺暐浜嗙浜岀淮鎴栬呮洿楂樼淮鐨勫ぇ灝忥紝緙栬瘧鍣ㄥ皢涓嶇煡閬撳浣曟紜殑瀵誨潃銆備絾鏄垜浠湪緙栧啓紼嬪簭鐨勬椂鍊欏嵈闇瑕佺敤鍒板悇涓淮鏁伴兘涓嶅浐瀹氱殑浜岀淮鏁扮粍浣滀負鍙傛暟錛岃繖灝遍毦鍔炰簡錛岀紪璇戝櫒涓嶈兘璇嗗埆闃匡紝鎬庝箞鍔炲憿錛熶笉瑕佺潃鎬ワ紝緙栬瘧鍣ㄨ櫧鐒朵笉鑳借瘑鍒紝浣嗘槸鎴戜滑瀹屽叏鍙互涓嶆妸瀹冨綋浣滀竴涓簩緇存暟緇勶紝鑰屾槸鎶婂畠褰撲綔涓涓櫘閫氱殑鎸囬拡錛屽啀鍙﹀鍔犱笂涓や釜鍙傛暟鎸囨槑鍚勪釜緇存暟錛岀劧鍚庢垜浠負浜岀淮鏁扮粍鎵嬪伐瀵誨潃錛岃繖鏍峰氨杈懼埌浜嗗皢浜岀淮鏁扮粍浣滀負鍑芥暟鐨勫弬鏁頒紶閫掔殑鐩殑錛屾牴鎹繖涓濇兂錛屾垜浠彲浠ユ妸緇存暟鍥哄畾鐨勫弬鏁板彉涓虹淮鏁伴殢鍗崇殑鍙傛暟錛屼緥濡傦細 void Func(int array[3][10]); void Func(int array[][10]); 鍙樹負錛?/span> void Func(int **array, int m, int n); 鍦ㄨ漿鍙樺悗鐨勫嚱鏁頒腑錛?span style="line-height: 34px; ">array[i][j]榪欐牱鐨勫紡瀛愭槸涓嶅鐨?span style="line-height: 34px; ">(涓嶄俊錛屽ぇ瀹跺彲浠ヨ瘯涓涓?span style="line-height: 34px; ">)錛屽洜涓虹紪璇戝櫒涓嶈兘姝g‘鐨勪負瀹冨鍧錛屾墍浠ユ垜浠渶瑕佹ā浠跨紪璇戝櫒鐨勮涓烘妸array[i][j]榪欐牱鐨勫紡瀛愭墜宸ヨ漿鍙樹負錛?/span> *((int*)array + n*i + j); 鍦ㄨ皟鐢ㄨ繖鏍風殑鍑芥暟鐨勬椂鍊欙紝闇瑕佹敞鎰忎竴涓嬶紝濡備笅闈㈢殑渚嬪瓙錛?/span> int a[3][3] = { {1, 1, 1}, {2, 2, 2}, {3, 3, 3} }; Func(a, 3, 3); 鏍規嵁涓嶅悓緙栬瘧鍣ㄤ笉鍚岀殑璁劇疆錛屽彲鑳藉嚭鐜?span style="line-height: 34px; ">warning 鎴栬?span style="line-height: 34px; ">error,鍙互榪涜寮哄埗杞崲濡備笅璋冪敤錛?span style="line-height: 34px; "> Func((int**)a, 3, 3); 鍏跺疄澶氱淮鏁扮粍鍜屼簩緇存暟緇勫師鐞嗘槸涓鏍風殑錛屽ぇ瀹跺彲浠ヨ嚜宸辨墿鍏呯殑澶氱淮鏁扮粍錛岃繖閲屼笉鍐嶈禈榪般傚啓鍒拌繖閲岋紝鎴戝厛鍚戠湅浜嗚繖綃囨枃绔犲悗鎮旂殑浜洪亾姝夛紝嫻垂浣犵殑鏃墮棿浜嗐備笅闈㈡槸涓涓畬鏁寸殑渚嬪瓙紼嬪簭錛岃繖涓緥瀛愮▼搴忕殑涓昏鍔熻兘鏄眰涓涓浘涓煇涓《鐐瑰埌鍏朵粬欏剁偣鐨勬渶鐭礬緇忥紝鍥炬槸浠ラ偦鎺ョ煩闃電殑褰㈠紡瀛樻斁鐨?span style="line-height: 34px; ">(涔熷氨鏄竴涓簩緇存暟緇?span style="line-height: 34px; ">)錛屽叾瀹炶繖涓嚱鏁頒篃鏄尯鏈夌敤鐨勶紝浣嗘槸鎴戜滑榪欑瘒鏂囩珷鐨勯噸鐐瑰湪浜庡皢浜岀淮鏁扮粍浣滀負鍑芥暟鐨勫弬鏁頒紶閫掋?/span> 涓婃枃緇撴潫錛屼笂鏂囨渶鍚庢寚鍑轟簡瀹炵幇浜屼綅鏁扮粍浣滀負鍑芥暟鍙傛暟鐨勬柟娉曪紝浣嗘槸瀹冨疄鐜扮殑鏄皢闈欐佺殑浜屼綅鏁扮粍浣滀負鍙傛暟錛屼絾鏄浣曞皢鍔ㄦ佽屼負鏁扮粍浣滀負鍙傛暟鍛紵涓婇潰鐨勬柟娉曟樉鐒舵槸涓嶅悎閫傜殑錛屼笅闈㈡槸鎴戠悽紓ㄥ嚭鏉ョ殑鏂規硶銆?/span> 鍏堝皢闈欐佹暟緇勪綔涓哄弬鏁扮殑浠g爜璐村嚭鏉? #include <iostream> 涓嬮潰鏄姩鎬佷簩浣嶆暟緇勪綔涓哄嚱鏁板弬鏁版椂鐨勪唬鐮侊細 #include <iostream> 榪欐牱錛屼互涓婄殑涓ゆ浠g爜涓嶄粎瀹炵幇浜嗗爢鍜屾爤涔嬮棿鏁版嵁鐨勪紶閫掞紝鑰屼笖瀹炵幇浜嗗爢鍜屽爢涔嬮棿鏁版嵁鐨勪紶閫掞紒
]]>
{
int i=3;
int j=(i++)+(i++);
// int j=(++i)+(++i);
printf("%d,%d\n",i,j);
}
瀵逛簬(i++)+(i++):
緇撴灉錛歩=5,j=6
鐩稿簲鐨勬眹緙栦唬鐮佷負(鏈夎緇嗘敞閲?錛?/p>
03 45 FC add eax,dword ptr [ebp-4] ;i+i=6
89 45 F8 mov dword ptr [ebp-8],eax ;6->j
8B 4D FC mov ecx,dword ptr [ebp-4] ;i->ecx(=3)
83 C1 01 add ecx,1 ;ecx=4
89 4D FC mov dword ptr [ebp-4],ecx ;4->i
8B 55 FC mov edx,dword ptr [ebp-4] ;i->edx
83 C2 01 add edx,1 ;edx=5
89 55 FC mov dword ptr [ebp-4],edx ;5->i
瀵逛簬(++i)+(++i)錛?br />緇撴灉錛歩=5,j=10
鐩稿簲鐨勬眹緙栦唬鐮佷負錛?/p>
83 C0 01 add eax,1 ;eax=4
89 45 FC mov dword ptr [ebp-4],eax ;4->i
8B 4D FC mov ecx,dword ptr [ebp-4] ;i->ecx
83 C1 01 add ecx,1 ;ecx=5
89 4D FC mov dword ptr [ebp-4],ecx ;5->i
8B 55 FC mov edx,dword ptr [ebp-4] ;i->edx
03 55 FC add edx,dword ptr [ebp-4] ;edx=10 ,鍗砳+i
89 55 F8 mov dword ptr [ebp-8],edx ;10->j
(2)鍦╣cc 3.2.2涓?
8b 55 fc movl -4(%ebp), %edx ;i->edx (=3)
8b 45 fc movl -4(%ebp), %eax ;i->eax (=3)
8d 04 10 leal (%eax,%edx), %eax ;i+i=6 ->eax
89 45 f8 movl %eax, -8(%ebp) ;6->j
8d 45 fc leal -4(%ebp), %eax ;&i->eax
ff 00 incl (%eax) ;i++ ,鍗砳=4,娉ㄦ剰榪欓噷涓哄瘎瀛樺櫒闂存帴瀵誨潃
8d 45 fc leal -4(%ebp), %eax ;&i->eax
ff 00 incl (%eax) ;i++,鍗砳=5
瀵逛簬(++i)+(++i)錛?br />緇撴灉錛歩=5,j=10
鐩稿簲鐨勬眹緙栦唬鐮佷負錛?/p>
leal -4(%ebp), %eax ;&i->eax
incl (%eax) ;i++,鍗砳=4
leal -4(%ebp), %eax ;&i->eax
incl (%eax) ;i++, i=5
movl -4(%ebp), %eax ;i->eax, eax=5
addl -4(%ebp), %eax ;i+i ->eax ,eax=10
movl %eax, -8(%ebp) ;10->j
鍙錛屽浜嶸C6.0鍜実cc錛屼簩鑰呯殑緇撴灉涓鑷達紝浣嗘槸gcc 3.2.2鐢熸垚鐨勬眹緙栦唬鐮佹槑鏄炬瘮VC6.0楂樻晥銆佺畝媧併傝繖涔熻鏄洜涓篤C 6.0鍑虹幇杈冩棭鐨勫師鍥犲惂銆?/p>
public static void main(String[] args) {
int i=3;
int j=(i++)+(i++); //5,7
//int j=(++i)+(++i); //5,9
System.out.println(i+","+j);
}
}
i=5,j=9銆傜粨鏋滅偣鎰忓!
鏉ョ湅鐪嬪畠鐨勫瓧鑺傜爜鍚?
//5,9
0: iconst_3 ;甯擱噺3鍏ユ爤
1: istore_1 ;浠庢爤涓脊鍑?,瀛樺叆i,i=3
2: iinc 1, 1 ;i++, i=4
5: iload_1 ;灝唅鍘嬪叆鏍?鍗?鍏ユ爤
6: iinc 1, 1 ; i++,i=5
9: iload_1 ;i鍏ユ爤,鍗?鍏ユ爤
10: iadd ;浠庢爤涓脊鍑轟袱涓猧nt綾誨瀷鐨勬暟鐩稿姞,緇撴灉鍏ユ爤,鍗?鍏ユ爤
11: istore_2 ;浠庢爤涓脊鍑?,瀛樺叆j,鍗砵=9
i=5,j=7銆傜粨鏋滀篃寰堟剰澶?
涔熸潵鐪嬬湅瀹冪殑瀛楄妭鐮佸惂:
//5,7
0: iconst_3 ;甯擱噺3鍏ユ爤
1: istore_1 ;浠庢爤涓脊鍑?,瀛樺叆i,i=3
2: iload_1 ;i鍏ユ爤,鍗?鍏ユ爤
3: iinc 1, 1 ;i++,鍗砳=4
6: iload_1 ;i鍏ユ爤,鍗?鍏ユ爤
7: iinc 1, 1 ;i++,鍗砳=5;娉ㄦ剰錛?娌℃湁鍏ユ爤,鎵浠ユ鏃舵爤涓殑鏁頒負3鍜?
10: iadd ;浠庢爤寮瑰嚭涓や釜int綾誨瀷鏁扮浉鍔狅紝緇撴灉鍏ユ爤,鍗?鍏ユ爤
11: istore_2 ;浠庢爤涓脊鍑?錛屽瓨鍏,鍗砵=7
涓緇存暟緇勫拰涓綰ф寚閽堢殑鐩稿悓鍜屽樊寮?/h2>
int a[3] int * const p;
楂樼淮鏁扮粍鍜岄珮闃舵寚閽?/h2>
int a[3][4] int**p;
a[0][0]錛宎[0][1]錛宎[0][2]錛宎[0][3] a[1][0]錛宎[1][1]錛宎[1][2]錛宎[1][3] a[2][0]錛宎[2][1]錛宎[2][2]錛宎[2][3]
int (*p)[3] = new int[4][3]
int (*p)[] = new int[4][3]
鍥炲埌涓緇存暟緇?/h2>

]]>
using namespace std;
void Calc(int **A, int m, int n);
int _tmain(int argc, _TCHAR* argv[])
{
int row = 0;
int col = 0;
int i = 0;
int A[3][3];
for (row = 0; row < 3; row++)
{
for (col = 0; col < 3; col++)
{
A[row][col] = row + col;
}
}
Calc((int **)A, 3, 3);
return 0;
}
void Calc(int **A, int m, int n)
{
if (NULL == A || m <1 || n < 1)
{
return;
}
int row = 0;
int col = 0;
int i = 0;
int j = 0;
int **matrix = NULL;
matrix = new int*[m];
if (NULL == matrix)
{
return;
}
for (row = 0; row < m; row++)
{
matrix[row] = new int[n];
if (NULL == matrix[row])
{
for (i = 0; i < row; i++)
{
delete []matrix[i];
matrix[i] = NULL;
}
delete []matrix;
matrix = NULL;
return;
}
}
for (row = 0; row < m; row++)
{
for (col = 0; col < n; col++)
{
matrix[row][col] = *((int *)A + row * n + col);
//matrix[row][col] = A[row][col];
}
}
for (row = 0; row < m; row++)
{
for (col = 0; col < n; col++)
{
cout<<matrix[row][col]<<" ";
}
cout<<"\n";
}
}
using namespace std;
void Calc(int **A, int m, int n);
int main(int argc, char* argv[])
{
int row = 0;
int col = 0;
int i = 0;
int **A = NULL;
A = new int*[3];
if (NULL == A)
{
return 0;
}
for (row = 0; row < 3; row++)
{
A[row] = new int[3];
if (NULL == A[row])
{
for (i = 0; i < row; i++)
{
delete []A[i];
A[i] = NULL;
}
delete []A;
A = NULL;
return 0;
}
}
for (row = 0; row < 3; row++)
{
for (col = 0; col < 3; col++)
{
A[row][col] = row + col;
}
}
Calc((int **)A, 3, 3);
return 0;
}
void Calc(int **A, int m, int n)
{
if (NULL == A || m <1 || n < 1)
{
return;
}
int row = 0;
int col = 0;
int i = 0;
int j = 0;
int **matrix = NULL;
matrix = new int*[m];
if (NULL == matrix)
{
return;
}
for (row = 0; row < m; row++)
{
matrix[row] = new int[n];
if (NULL == matrix[row])
{
for (i = 0; i < row; i++)
{
delete []matrix[i];
matrix[i] = NULL;
}
delete []matrix;
matrix = NULL;
return;
}
}
for (row = 0; row < m; row++)
{
for (col = 0; col < n; col++)
{
//matrix[row][col] = *((int *)A + row * n + col);
matrix[row][col] = A[row][col];
}
}
for (row = 0; row < m; row++)
{
for (col = 0; col < n; col++)
{
cout<<matrix[row][col]<<" ";
}
cout<<"\n";
}
}
娉ㄦ剰涓婇潰鐨勪唬鐮佺殑涓嶅悓涔嬪錛屽嵆灝嗗姩鎬佷簩緇存暟緇勪綔涓哄嚱鏁板弬鏁版椂錛屽湪鍑芥暟閲岄潰搴旂敤鏃跺欒灝嗗叾浼鎴愰潤鎬佷簩緇存暟緇勶紒
]]>
6.2緇撴瀯涓庡嚱鏁?br />p114---(1)涓嶅悓鐨勭粨鏋勪綋鍙橀噺涔嬮棿榪涜璧嬪間細榪涜綆鍗曠殑嫻呮嫹璐濆間紶閫掋?br />p115---(2)緇撴瀯榪愮畻絎?." 鍜?->",鐢ㄤ簬鍑芥暟璋冪敤鐨?()"浠ュ強鐢ㄤ簬涓嬫爣鐨?[]"鐨勭畻鏈浼樺厛綰ф渶楂樸?br />
6.3緇撴瀯鏁扮粍
p116---(1)緇撴瀯浣撴暟緇勫垵濮嬪寲
struct key {
char *word;
int count;
}keytab[] = {
{"auto",0},
{"break",0},
{"case",0},
{"while",0}
};
p118---(2)璁$畻緇撴瀯浣撴暟緇勪腑鐨勭粨鏋勪綋涓暟鏃訛紝闇瑕佺敤鍒皊izeof, sizeof keytab / sizeof(struct key) 銆傚彟澶栨潯浠剁紪璇戣鍙?if涓笉鑳戒嬌鐢╯izeof錛屽洜涓洪澶勭悊鍣ㄩ儴闃熺被鍨嬪悕榪涜鍒嗘瀽.浣嗛澶勭悊鍣ㄥ茍涓嶈綆?define璇彞涓殑琛ㄨ揪寮?鍥犳鍦?define涓嬌鐢╯izeof鏄悎娉曠殑銆?br />
6.4鎸囧悜緇撴瀯鐨勬寚閽?br />p120---(1)涓や釜鎸囬拡涔嬮棿鐨勫姞娉曡繍綆楁槸闈炴硶鐨勩備絾鏄?鎸囬拡鐨勫墤娉曡繍綆楀嵈鏄悎娉曠殑,mid=(low+high)/2鏄敊璇殑,浣嗘槸mid=low+(high-low)/2灝卞彲浠ヤ簡銆?br />p115---(2)鍗冧竾涓嶈浠ヤ負緇撴瀯鐨勯暱搴︾瓑浜庡悇鎴愬憳闀垮害鐨勫拰銆傚洜涓轟笉鍚岀殑瀵硅薄鏈変笉鍚岀殑瀵歸綈瑕佹眰錛屾墍浠ワ紝緇撴瀯涓彲鑳戒細鍑虹幇鏈懡鍚嶇殑“絀虹┐”銆備竴鑸渶瑕佷嬌鐢╯izeof鏉ユ紜幏寰楃粨鏋勪綋闀垮害銆?br />
6.5鑷紩鐢ㄧ粨鏋?br />
6.6琛ㄦ煡鎵?br />
6.7綾誨瀷瀹氫箟(typedif)
p127---(1)typedef涓0鏄庣殑綾誨瀷鍦ㄥ彉閲忎綅緗嚭鐜幫紝鑰屼笉鏄揣鎺ュ湪鍏抽敭瀛梩ypedef涔嬪悗銆倀ypedef鍦ㄨ娉曚笂綾諱技涓巈xtern絳夈?br />p128---(2)typedef綾諱技涓?define璇彞錛屼絾鐢變簬typedef鏄敱緙栬瘧鍣ㄨВ閲婄殑錛屽洜姝ゅ畠鐨勯棶棰樻浛鎹㈠姛鑳借瓚呰繃棰勫鐞嗗櫒鐨勮兘鍔涖備緥濡? typedef int (*PFI)(char *,char*);
6.8鑱斿悎
p128---(1)鑱斿悎鎻愪緵浜嗕竴縐嶆柟寮忥紝浠ュ湪鍗曞潡瀛樺偍鍖轟腑綆$悊涓嶅悓綾誨瀷鐨勬暟鎹紝鐩殑鍦ㄤ簬涓涓彉閲忓彲浠ュ悎娉曠殑淇濆瓨澶氱鏁版嵁綾誨瀷涓殑浠諱綍涓縐嶇被鍨嬨?br />p129---(2)鑱斿悎浣撳彉閲忚鍙栫殑綾誨瀷蹇呴』鏄渶榪戜竴嬈″瓨鍏ョ殑綾誨瀷銆傜▼搴忓憳璧嬪艱窡韙綋鍓嶄繚瀛樺湪鑱斿悎涓殑綾誨瀷錛屽鏋滀繚瀛樼殑綾誨瀷鍜岃鍙栫殑綾誨瀷涓嶄竴鑷達紝鍏剁粨鏋滃彇鍐充簬鍏蜂綋鐨勫疄鐜般?br />p130---(3)鑱斿悎灝辨槸涓涓粨鏋勶紝浠栧緱鎵鏈夋垚鍛樼浉瀵逛簬鍩哄湴鍧鐨勫亸縐婚噺閮芥槸0錛屾緇撴瀯絀洪棿瑕佸ぇ鍒拌凍澶熷綰蟲渶“瀹?#8221;鐨勬垚鍛樸?br />
6.9浣嶅瓧孌?br />p131---(1)struct {
unsigned int is_keyword : 1;
unsigned int is_extern : 1;
}flag;
榪欓噷瀹氫箟浜嗕竴涓彉閲廸lag錛屽畠鍖呭惈3涓?浣嶇殑瀛楁銆傚啋鍙峰悗鐨勬暟瀛楄〃紺哄瓧孌電殑瀹藉甫(2榪涘埗)銆?br />flag.is_keyword = 1;
]]>
p79---(1)鎸囬拡鏄兘澶熷瓨鏀句竴涓湴鍧鐨勪竴緇勫瓨鍌ㄥ崟鍏冿紝閫氬父鏄袱涓垨鑰呭洓涓瓧鑺傘?br />p80---(2)int *ip 錛岃澹版槑璇彞琛ㄦ槑*ip鐨勭粨鏋滄槸涓涓猧nt綾誨瀷銆?br />
5.2鎸囬拡涓庡嚱鏁板弬鏁?br />
5.3鎸囬拡涓庢暟緇?br />p84---(1)濡傛灉pa鎸囧悜鏁扮粍涓殑鏌愪釜鐗瑰畾鍏冪礌錛岄偅涔堟牴鎹寚閽堣繍綆楃殑瀹氫箟錛宲a+1灝嗘寚鍚戜笅涓涓厓绱狅紝pa+i灝嗘寚鍚憄a鎵鎸囧悜鏁扮粍鍏冪礌涔嬪悗鐨勭i涓厓绱犮備緥濡?(pa+i)絳夊悓浜巃[i]銆?br />p85---(2)鎴戜滑蹇呴』璁頒綇錛屾暟緇勫悕鍜屾寚閽堜箣闂存湁涓涓笉鍚屼箣澶勩傛寚閽堟槸涓涓彉閲忥紝鍥犳錛屽湪c璇█涓紝璇彞pa=a鍜宲a++閮芥槸鍚堟硶鐨勩備絾鏁扮粍鍚嶄笉鏄彉閲忥紝鍥犳錛岀被浼間簬a=pa錛宎++鐨勮鍙ラ兘鏄潪娉曠殑銆?br />p86---(3)濡傛灉紜俊鐩稿簲鐨勫厓绱犲瓨鍦紝涔熷彲浠ラ氳繃涓嬫爣璁塊棶鏁扮粍絎竴涓厓绱犱箣鍓嶇殑鍏冪礌銆傜被浼鹼細p[-1]銆乸[-2]榪欐牱鐨勮〃杈懼紡鍦ㄨ娉曚笂涔熸槸鍚堟硶鐨勶紝瀹冧滑鍒嗗埆寮曠敤浣嶄簬p[0]涔嬪墠鐨勪袱涓厓绱狅紝褰撶劧寮曠敤鏁扮粍杈圭晫涔嬪鐨勫璞℃槸闈炴硶鐨勩?br />
5.4鍦板潃綆楁湳榪愮畻
p87---(1)c璇█淇濊瘉錛?姘歌繙涓嶆槸鏈夋晥鐨勬暟鎹湴鍧錛屽洜姝よ繑鍥炲?鍙敤鏉ヨ〃紺哄彂鐢熶簡寮傚父浜嬩歡銆?br />p88---(2)鎸囬拡涓庢暣鏁頒箣闂翠笉鑳界浉浜掕漿鎹紝浣?鏄儫涓鐨勪緥澶栵細甯擱噺0鍙互璧嬪肩粰鎸囬拡錛屾寚閽堜篃鍙互鍜屽父鏁?榪涜姣旇緝銆傜▼搴忎腑緇忓父鐢ㄧ鍙峰父閲廚ULL浠f浛甯擱噺0錛岃繖鏍蜂究浜庢洿娓呮櫚鍦拌鏄庡父閲?鏄寚閽堢殑涓涓壒孌婂箋傜鍙峰父閲廚ULL瀹氫箟鍦ㄦ爣鍑嗗ご鏂囦歡<stddef.h>涓?br />p89---(3)鏈夋晥鐨勬寚閽堣繍綆楀寘鎷浉鍚岀被鍨嬫寚閽堜箣闂寸殑璧嬪艱繍綆楋紱鎸囬拡鍚屾暣鏁頒箣闂寸殑鍔犳硶鎴栧噺娉曡繍綆楋紱鎸囧悜鐩稿悓鏁扮粍涓厓绱犵殑涓や釜鎸囬拡闂寸殑鍑忔硶鎴栨瘮杈冭繍綆楋紝灝嗘寚閽堣祴鍊間負0鎴栨寚閽堜笌0涔嬮棿鐨勬瘮杈冭繍綆椼傚叾浠栨墍鏈夊艦寮忕殑鎸囬拡榪愮畻閮芥槸闈炴硶鐨勶紝渚嬪涓や釜鎸囬拡闂寸殑鍔犳硶錛屼箻娉曪紝闄ゆ硶錛岀Щ浣嶆垨灞忚斀榪愮畻錛涙寚閽堝悓float鎴杁ouble綾誨瀷涔嬮棿鐨勫姞娉曡繍綆楋紱涓嶇粡寮哄埗綾誨瀷杞崲鑰岀洿鎺ュ皢鎸囧悜涓縐嶇被鍨嬪璞$殑鎸囬拡璧嬪肩粰鎸囧悜鍙︿竴縐嶇被鍨嬪璞$殑鎸囬拡榪愮畻銆?br />
5.5瀛楃鎸囬拡涓庡嚱鏁?br />p90---(1)娉ㄦ剰char amessage[] = "now"; 鍜宑har *pmessage = "now";鐨勫尯鍒紝amesaage鏄竴涓粎浠呭瓨鏀懼垵濮嬪寲瀛楃涓蹭互鍙婄┖瀛楃'\0'鐨勪竴緇存暟緇勩傚畠濮嬬粓鎸囧悜鍚屼竴涓瓨鍌ㄤ綅緗傝宲meesage鏄竴涓寚閽堬紝鍏跺垵鍊兼寚鍚戜竴涓瓧絎︿覆甯擱噺錛屼箣鍚庤繕鍙互琚慨鏀逛互鎸囧悜鍏朵粬鍦板潃銆?br />
5.6鎸囬拡鏁扮粍浠ュ強鎸囧悜鎸囬拡鐨勬寚閽?br />p94---(1)char *lineptr[MAXLINES]鏄竴涓寚閽堟暟緇勶紝lineptr[i]鏄竴涓瓧絎︽寚閽堬紝鑰?lineptr[i]鏄鎸囬拡鎸囧悜鐨勭i涓枃鏈鐨勯瀛楃銆?br />
5.7澶氱淮鏁扮粍
p95---(1)char daytab[2][3] = {{1,2,3},{1,2,3}};
p96---(2)濡傛灉灝嗕簩緇存暟緇勪綔涓哄弬鏁頒紶閫掔粰鍑芥暟錛岄偅涔堝湪鍑芥暟鐨勫弬鏁板0鏄庝腑蹇呴』鎸囨槑鏁扮粍鐨勫垪鏁般?/span>
p97---(3)鐗瑰埆娉ㄦ剰錛屾柟鎷彿[]鐨勪紭鍏堢駭楂樹簬*鐨勪紭鍏堢駭錛屾墍浠nt (*day)[13] 涓?int *day[13]鏄畬鍏ㄤ笉鍚岀殑鍚箟銆傚墠鑰呮槸琛ㄧず涓涓簩緇存暟緇勶紝姣忎釜鍏冪礌鏀緄nt綾誨瀷錛涘悗鑰呰〃紺轟竴緇存寚閽堟暟緇勶紝閲岄潰鏀劇殑鏄寚鍚戜竴涓猧nt綾誨瀷鐨勫湴鍧銆?/span>
5.8鎸囬拡鏁扮粍鐨勫垵濮嬪寲
5.9鎸囬拡涓庡緇存暟緇?/font>
p98---(1)鍒扮洰鍓嶄負姝紝鎸囬拡鏁扮粍鏈棰戠箒鐨勭敤澶勬槸瀛樻斁鍏鋒湁涓嶅悓闀垮害鐨勫瓧絎︿覆
5.10鍛戒護琛屽弬鏁?/font>
p98---(1)璋冪敤涓誨嚱鏁?/span>main鏃訛紝瀹冩湁涓や釜鍙傛暟銆傜涓涓弬鏁?/span>argc鐨勫艱〃紺鴻繍琛岀▼搴忔椂鍛戒護琛屼腑鍙傛暟鐨勬暟鐩紱絎簩涓弬鏁?/span>argv鏄竴涓寚鍚戝瓧絎︿覆鏁扮粍鐨勬寚閽堬紝鍏朵腑姣忎竴涓瓧絎︿覆瀵瑰簲涓涓弬鏁般?/span>
p99---(2)鎸夌収c璇█鐨勭害瀹氾紝argv[0]鐨勫兼槸鍚姩紼嬪簭鐨勭▼搴忓悕錛屽洜姝?/font>argc鐨勫艱嚦灝戜負1.濡傛灉argc鐨勫間負1錛屽垯璇存槑紼嬪簭鍚庨潰娌℃湁鍛戒護琛屽弬鏁般傜涓涓彲閫夌殑鍙傛暟涓?/font>argv[1],鑰屾渶鍚庝竴涓彲閫夊弬鏁頒負argv[argc-1]銆傚彟澶栵紝ANSI鏍囧噯瑕佹眰argv[argc]蹇呴』涓轟竴涓┖鎸囬拡銆?/font>
p101---(3)娉ㄦ剰(*++argv)[0]涓?/font>*++argv[0]鐨勫尯鍒紝鍓嶈呮槸琛岀Щ鍔紝鍚庤呮槸鍒楃Щ鍔ㄣ?/font>
5.11鎸囧悜鍑芥暟鐨勬寚閽?/font>
p104---(1)娉ㄦ剰int (*comp)(void *,void *)涓?/font>int *comp(void *,void *)鐨勫尯鍒紝鍓嶈?/font>comp鏄竴涓嚱鏁版寚閽堟寚鍚戜竴涓繑鍥炵被鍨嬩負int鐨勫嚱鏁幫紝鑰屽悗鑰?/font>comp涓哄嚱鏁板悕榪斿洖綾誨瀷涓?/font>int鎸囬拡銆?/font>
5.12澶嶆潅澹版槑錛堣繖鑺傚悗闈㈢殑紼嬪簭鏈夌偣澶嶆潅錛岀洿鎺ユ棤瑙嗭紝鍝堝搱~~錛?nbsp;
p106---(1)char (*(*x())[])() ,x鏄竴涓棤鍙傚嚱鏁幫紝榪斿洖涓涓寚閽堬紝鎸囬拡鎸囧悜涓涓暟緇勶紝鏁扮粍涓殑鍏冪礌涔熸槸鎸囬拡錛屾寚鍚戜竴涓繑鍥炵被鍨嬩負char鐨勬棤鍙傚嚱鏁般?/font>
p106---(2)char (*(*x[3])())[5] ,x鏄竴涓暱搴︿負3鐨勬暟緇勶紝鏁扮粍涓殑鍏冪礌鏄寚閽堬紝鎸囧悜涓涓棤鍙傜殑鍑芥暟錛岃鍑芥暟榪斿洖綾誨瀷涔熸槸鎸囬拡錛屾寚鍚戜竴涓暱搴︿負5鐨?/font>char綾誨瀷鏁扮粍銆?/font>
4.9鍒濆鍖?br />p72---(1)鍦ㄤ笉鏄懼紡鍒濆鍖栫殑鎯呭喌涓嬶紝澶栭儴鍙橀噺鍜岄潤鎬佸彉閲忛兘灝嗚闅愬紡鍒濆鍖栦負0錛岃岃嚜鍔ㄥ彉閲忓拰瀵勫瓨鍣ㄥ彉閲忕殑鍒濆煎垯娌℃湁鎰忎箟銆?br />p72---(2)澶栭儴鍙橀噺涓庨潤鎬佸彉閲忔潵璇達紝鍒濆鍖栫殑琛ㄨ揪寮忓繀欏繪槸甯擱噺琛ㄨ揪寮?鍗充笉鑳芥槸涔嬪墠宸茬粡瀹氫箟榪囩殑鍊?銆?br />
4.10閫掑綊
4.11C棰勫鐞嗗櫒
4.11.1鏂囦歡鍖呭惈
p75---(1)#include鐨勮灝嗚鏇挎崲涓虹敱鏂囦歡鍚嶆寚瀹氱殑鏂囦歡鐨勫唴瀹廣傚鏋滄枃浠跺悕鐢ㄥ紩鍙峰紩璧鋒潵錛屽垯鍦ㄦ簮鏂囦歡鎵鍦ㄤ綅緗煡鎵捐鏂囦歡錛涘鏋滄病鏈夋壘鍒版枃浠訛紝鎴栬呬嬌鐢ㄥ皷鎷彿鎶婃枃浠跺悕寮曡搗鏉ワ紝鍒欏皢鏍規嵁鐩稿簲鐨勮鍒?鏌ユ壘璇ユ枃浠訛紝榪欎釜瑙勫垯鍚屽叿浣撶殑瀹炵幇鏈夊叧銆?br />
4.11.2瀹忔浛鎹?br />p76---(1)閫氬父鎯呭喌涓嬶紝#define鎸囧畾鍗犱竴琛岋紝鏇挎崲鏂囨湰鏄?define鎸囧畾琛屽熬閮ㄧ殑鎵鏈夊墿浣欓儴鍒嗗唴瀹癸紝浣嗕篃鍙互鎶婁竴涓緝闀跨殑瀹忓畾涔夊垎鎴愯嫢騫茶錛岃繖鏃墮渶瑕佸湪寰呯畫鐨勮鏈熬鍔犱笂涓涓弽鏂滄潬絎銆?br />p76---(2)瀹忓畾涔変篃鍙互甯﹀弬鏁幫紝濡俤efine max(A,B) ((A)>(B)?(A):(B)),璋冪敤鏃跺欏彧闇瑕亁 = max(i,j)灝卞彲浠ャ備絾浠旂粏鑰冭檻涓涓媘ax鐨勫睍寮寮忥紝灝變細鍙戠幇瀛樺湪涓浜涚己闄鳳紝鍏朵腑琛ㄨ揪寮忚閲嶅璁$畻2嬈★紝閭d箞鍋囧榪欐牱璋冪敤x = max(i++,j++)緇撴灉浼氫嬌i鎴杍鑷涓ゆ銆?br />p77---(3)棰勫鐞嗗櫒榪愮畻絎?#鎻愪緵浜嗕竴縐嶈繛鎺ュ疄闄呭弬鏁扮殑鎵嬫銆傚鏋滄浛鎹㈡枃鏈腑鐨勫弬鏁頒笌##鐩擱偦錛屽垯璇ュ弬鏁板皢琚疄闄呭弬鏁版浛鎹紝##涓庡墠鍚庣殑絀虹櫧絎﹀皢琚垹闄わ紝騫跺鏇挎崲鍚庣殑緇撴灉閲嶆柊鎵弿銆備緥濡?#define paster(f,b) f##b 錛岃皟鐢ㄧ殑鏃跺檖aster(i,5)緇撴灉灝嗘槸i5鐨勫弬鏁般?br />
4.11.3鏉′歡鍖呭惈
p78---(1)#if璇彞瀵瑰叾涓殑甯擱噺鏁村艦琛ㄨ揪寮忥紙涓嶈兘鍖呭惈sizeof銆佺被鍨嬭漿鎹€乪num甯擱噺錛夎繘琛屾眰鍊鹼紝鑻ヨ〃杈懼紡鐨勫奸潪0鍒欏寘鍚叾鍚庡悇琛岋紝鐩村埌閬囧埌#endif\#elif鎴?else璇彞涓烘銆?br />榪樻湁鍏朵粬鐨?ifdef銆?ifndef銆?endif絳夌瓑銆傘傘傘?/p>




