锘??xml version="1.0" encoding="utf-8" standalone="yes"?> C/C++璇█涓殑main鍑芥暟錛岀粡甯稿甫鏈夊弬鏁癮rgc錛宎rgv錛屽涓嬶細 榪欎袱涓弬鏁扮殑浣滅敤鏄粈涔堝憿錛焌rgc 鏄寚鍛戒護琛岃緭鍏ュ弬鏁扮殑涓暟錛宎rgv瀛樺偍浜嗘墍鏈夌殑鍛戒護琛屽弬鏁般傚亣濡備綘鐨勭▼搴忔槸hello.exe錛屽鏋滃湪鍛戒護琛岃繍琛岃紼嬪簭錛岋紙棣栧厛搴旇鍦ㄥ懡浠よ涓嬬敤 cd 鍛戒護榪涘叆鍒?hello.exe 鏂囦歡鎵鍦ㄧ洰褰曪級 榪愯鍛戒護涓猴細 閭d箞錛宎rgc鐨勫兼槸 3錛宎rgv[0]鏄?hello.exe"錛宎rgv[1]鏄?Shiqi"錛宎rgv[2]鏄?Yu"銆? 涓嬮潰鐨勭▼搴忔紨紺篴rgc鍜宎rgv鐨勪嬌鐢細 鍋囧涓婅堪浠g爜緙栬瘧涓篽ello.exe錛岄偅涔堣繍琛? 灝嗗緱鍒? 榪愯 灝嗗緱鍒?
void GetMemory(char *p, int num)
{
p = (char *)malloc(sizeof(char) * num);
}
void Test(void)
{
char *str = NULL;
GetMemory(str, 100); // str 浠嶇劧涓?NULL
strcpy(str, "hello"); // 榪愯閿欒
}
闃呰鍏ㄦ枃
]]>
]]>
]]>#include <stdio.h>
void setNum(int *p,int a);
void setNum(int *p);
int main()
{
int a[] =
{1,2,4,5};
printf("%d\n",sizeof(a)/sizeof(a[0]));
setNum(a);
}
void setNum(int *p,int a)
{
*p = a;
}
void setNum(int *p)
{
int Num = sizeof(p)/sizeof(p[0]);
printf("%d\n",Num);
}
鍘熷洜鍒嗘瀽錛?br>1.瀵逛簬絎竴涓緭鍑猴紝鐢變簬鍦╩ain鍑芥暟涓畾涔夌殑涓烘暟緇勶紝鎵浠ュ彲浠ョ洿鎺ュ埄鐢╯izeof鍑芥暟鏉ユ眰鍑篴鏁扮粍鐨勯暱搴︺?br>2.瀵逛簬浼犻掑弬鏁扮被鍨嬶紝姣斿涓婇潰鐨剆etNum鍑芥暟錛堟湭浼犻掍釜鏁扮増鏈級錛屾鏃訛紝璋冪敤璇ュ嚱鏁扮殑鏃跺欙紝a閫鍖栦負涓涓櫘閫氱殑鎸囬拡錛屼篃灝辨槸璇達紝姝ゆ椂sizeof(p)姹傚嚭鏉ョ殑灝辨槸涓涓寚閽堢殑澶у皬錛岄櫎浠nt鐨勫ぇ灝忥紝鎭板ソ涓?.
鍚ず錛?br>C璇█涓紝涓嶈兘澶熸牴鎹竴涓暟緇勬寚閽堝氨姹傚嚭鏉ヤ換鎰忎竴涓暟緇勭殑澶у皬銆傝В鍐沖姙娉曞氨鏄紶絎竴涓弬鏁拌繘鏉ワ紝鎸囧畾澶у皬銆?br>
ps錛氬弬鑰冭祫鏂欙紙璇﹀疄錛夛細http://topic.csdn.net/t/20060205/18/4540750.html
鎽樺綍錛?br>> 濡傛灉浣滀負鍑芥暟鐨勫弬鏁版槸娌℃硶姹傜殑,
> 浣嗚繖鏍鋒槸鍙互鐨?
>
> #define LENGTH(s) (sizeof(s) / sizeof(int))
>
> int s[12];
> int length = LENGTH(s);
==================================================
榪欐牱鐨勬柟娉曞彧鑳界敤浜庢暟緇勫彉閲忕殑鏁扮粍鍚嶏紝瀵逛簬鎸囧悜鏁扮粍鐨勬寚閽堬紝浠ュ強浣滀負鍙傛暟鐨勬暟緇勫悕閮芥槸娌℃湁鏁堟灉鐨勶紝涓婇潰宸茬粡鏈変漢瑙i噴浜?span class=Apple-converted-space>
銆嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨嬨?br>涓嶅彲鑳芥湁鍔炴硶鐨勩?span class=Apple-converted-space>
褰撲綘瀹氫箟涓涓暟緇勭殑鏃跺欙細
int a[] = {1, 2, 3}; // 瀹為檯涓婅緙栬瘧涓? int a[3] = {1錛?錛?}
鏁扮粍鍚嶄唬琛ㄧ殑鏄暟緇勭殑鍦板潃銆傛敞鎰? 鈥斺? 浣犵粷瀵規病鏈夊姙娉曢氳繃鏁扮粍鍚嶅姩鎬佽幏寰楁暟緇勭殑澶у皬銆傚綋浣犱涪澶盿鐨勯暱搴︿俊鎭殑鏃跺欙紝浣犳案榪滀笉鍙兘鐭ラ亾浠栫殑闀垮害銆?span class=Apple-converted-space>
閭d箞 sizeof 鏄庝箞鍥炰簨鍛紵浠栦笉鏄氳繃 a 鐨勫悕瀛楄幏寰? a鐨勫ぇ灝忎簡涔堬紵 鈥斺? 澶ч敊鐗歸敊錛?span class=Apple-converted-space>
鍏抽敭瀛? sizeof 浜х敓鐨勬槸涓涓紪璇戞湡甯擱噺錛堟敞1錛? 浠栫殑榪愪綔鏂瑰紡鏄繖鏍風殑錛?span class=Apple-converted-space>
褰撲綘鍐欙細
sizeof a
瀹炶川鏄?
sizeof ( a鐨勭被鍨? )
鑰宎鐨勭被鍨嬫槸浠涔堝憿錛熺紪璇戝櫒瀵熺湅 a鐨勫畾涔夊彂鐜幫紝 鏄? int [3]
灝辨槸璇達紝榪欓噷 sizeof a 瀹炶川鏄細
sizeof ( int[3] )
瀹屽叏絳夊悓浜庡父閲? 12 錛堝亣瀹歩nt涓?瀛楄妭錛夈?span class=Apple-converted-space>
鑰冭檻涓涓嚱鏁?span class=Apple-converted-space>
void func( int a[] );
// 鍐欐垚 int a[3] 涔熶笉浼氭湁鏈川鍖哄埆鈥斺斾篃璁鎬綘璇ヨ瘯璇曞啓鎴? int (&a) [3] 錛?span class=Apple-converted-space>
C++瑙勫畾錛屾暟緇勪綔涓哄艦鍙傜殑鏃跺欙紝a浠h〃鏁扮粍棣栧湴鍧銆?span class=Apple-converted-space>
浠栫殑搴曞眰鎰忎箟鏄細 a 閫鍖栦負浜嗕竴涓?瀛楄妭鐨勬寚閽堬紝娌℃湁浠諱綍鍙橀噺琛ㄧず鏁扮粍鐨勫ぇ灝忎細“鑷姩”琚紶閫掕繘鏉ャ?span class=Apple-converted-space>
鎴戜滑鐪嬬湅榪欎釜鏃跺? sizeof a鏄粈涔堬細
sizeof( 鍑芥暟褰㈠弬鐨刟[] ) = sizeof( int* const ) = 4 // 褰撶劧a[]涓嶆槸鍚堟硶鐨凜++綾誨瀷
浠嶇劧涓嶆湇姘旓紵濂解斺旀垜浠弽闂竴涓棶棰橈細鑻ヤ綘鏄疌 /C++鐨勮璁¤咃紝 浣犳庝箞鍦ㄥ吋瀹瑰師鏈夎璁$殑鍩虹涓婅void func( int a[] )鍚屾椂浼犻掑湴鍧鍜屽ぇ灝忥紵
棣栧厛錛宎鏄竴涓彉閲忥紝鑰屼笖綾諱技鏁扮粍銆備粬蹇呴』鏄竴涓湴鍧錛屽惁鍒欎綘涓嶇煡閬撳浣曠儲寮曞厓绱犮?span class=Apple-converted-space>
浠栨庝箞鍐嶅甫涓婁竴涓彉閲忚〃紺轟粬鐨勫ぇ灝忓憿錛?span class=Apple-converted-space>
鎵╁厖 sizeof (a) 鐨勮兘鍔涳紵
sizeof a 蹇呴』浜х敓浠g爜鈥斺斾笉綆℃槸甯擱噺榪樻槸浠涔堛? 瑕佽浠栧湪榪愯鏃跺喅瀹? a鐨勫鹼紝 a灝卞繀欏誨甫涓婁粬鐨勫ぇ灝忎俊鎭?
1 浣犲繀欏諱慨鏀笴鏍囧噯錛岃C鏀寔“涓ょ”鏁扮粍銆備竴縐嶆槸瀹氫箟澶勭殑鏁扮粍錛屼粬鍒嗛厤澶х墖榪炵畫鍐呭瓨錛屽拰鍘熸潵鐨凜鏍囧噯鐩稿悓銆?span class=Apple-converted-space>
2 鍙︿竴縐嶆槸浣滀負鍙傛暟浼犻掓暟緇勩? 浣犲繀欏諱紶閫掑湴鍧鍜屾暟緇勫ぇ灝忥紱榪欎釜鏁扮粍瀹為檯涓婃槸涓涓?瀛楄妭鐨勭粨鏋剓 鍦板潃; 澶у皬}錛堜簨瀹炰笂鍙兘鏇村姞澶嶆潅錛岃冭檻澶氱含鏁扮粍濡備綍瀹炵幇錛? 錛?
3 緋葷粺蹇呴』鏍規嵁涓ょ涓嶅悓鏁扮粍鍒嗗埆瀹炵幇鍏? []銆? 銆?amp;絳夈? 鍘熸湁鐨勬暟緇勬牴鎹叾棣栧湴鍧鍋忕Щ錛堣繖鏄釜甯擱噺錛夊拰涓嬫爣瀵誨潃錛? 鑰屽弬鏁版暟緇勫垯棣栧厛鍙?#8220;鍦板潃”鍐呭錛堣繖鏄釜鍙橀噺錛夛紝鐒跺悗鏍規嵁榪欎釜鍦板潃瀵誨潃....
鍘?.. 鍐嶈冭檻澶氱淮鏁扮粍鈥斺斿惉璧鋒潵榪欎笉鏄竴鏁村vector妯″瀷涔堬紵
-----------------------------------------------
娉?: 瀵逛簬C99鏀寔鐨? flexible array 錛屽叾 sizeof 榪愮畻鏄繍琛屾椂姹傚?/span>
]]>
struct tr *p;
p=&t[0];
鐒跺悗鍒楀嚭浜嗗嚑涓夐」錛岃璇村嚭浜嗗垎鍒摢涓涓〃杈懼紡琛ㄧず鐨勫間負6.鍏蜂綋閫夐」灝辨槸錛?br> p->n++ ++p->n (*p).n++ ++p->n
褰撶劧錛岄鐩殑璇濋夐」榪樻湁浜涗笉璁板緱浜嗭紝涓嶈繃瑙夊緱鍏跺疄鍙鐞嗚В浜嗗師鐞嗭紝閭d箞灝卞緢瀹規槗鍒ゆ柇浜嗐?br>
鍏堢湅浠g爜錛?br>
struct tr{
int n;
struct tr *next;
};
int main(){
struct tr t[3] = {5,&t[1],7,&t[2],9,0};
struct tr *p;
p=&t[0];
printf("p->n++=%d\n",p->n++);
printf("p->n=%d\n",p->n);
printf("*p=%d\n",*p);
printf("(*p).n=%d\n",(*p).n);
printf("(*p).n++=%d\n",(*p).n++);
printf("++p->n=%d\n",++p->n);
}
榪愯緇撴灉濡備笅錛?br>p->n++=5
p->n=6
*p=6
(*p).n=6
(*p).n++=6
++p->n=8
Press any key to continue
棣栧厛錛岀湅鐪嬩笂闈㈢殑棰樼洰涓殑閭d釜鍒濆鍖栫殑鍚箟鍚э紒
struct tr t[3] = {5,&t[1],7,&t[2],9,0};
娉ㄦ剰榪欐牱鐨勪竴涓粨鏋勪綋寮忓彲浠ュ垵濮嬪寲鐨勶紝涓嶅悓浜嶤++鐨勪綔鐢ㄥ煙闄愬畾鑼冨洿錛乻truct鏄叕鏈夌殑鏁版嵁璁塊棶鏉冮檺銆?br>
鍓╀笅浜嗙殑闂灝辨槸錛屽悇涓殑鍚箟鏄灝戜簡銆?br>p->n 琛ㄧず鐨勫氨鏄痯鎸囧悜鐨勮妭鐐圭殑璇佷功鑼冨洿鍩燂紝鎵浠ユ槸5錛屽綋鐒訛細閲嶇偣鏉ヤ簡錛岀敱浜庢槸璇寸殑琛ㄨ揪寮忕殑鍊鹼紝鎵浠ュ垎涓哄墠緗拰鍚庣疆琛ㄨ揪寮忕殑鍖哄埆浜嗐?br>錛堝叧浜庡墠緗拰鍚庣疆鐨勫尯鍒鎴戠殑榪欑瘒鍗氭枃錛?a href="http://www.shnenglu.com/deercoder/archive/2010/01/22/106251.aspx">http://www.shnenglu.com/deercoder/archive/2010/01/22/106251.aspx
錛?br>濡傛灉鏄痯->n++,閭d箞榪欎釜琛ㄨ揪寮忕殑鍊間負錛?錛屼絾鏄繍綆楀畬鎴愪箣鍚庯紝n鐨勫間細鍙樺寲錛屾墍浠鐨勫兼槸6錛屼絾鏄〃杈懼紡鐨勫肩殑鍚箟瑕佹悶娓呮錛岀‘鍒囩殑璇村氨鏄繖涓〃杈懼紡鐨勭粨鏋滐紝鐢變簬鍚庣疆鐨?+鏄湪瀹屾垚涔嬪悗鎵嶅仛鐨勶紝鎵浠ヤ笉鑳藉獎鍝嶅埌琛ㄨ揪寮忕殑鍊鹼紝浜庢槸灝變負5銆?br>鑰屽墠緗殑++鍒欐槸鍏堣繘琛?+榪愮畻涔嬪悗鎵嶅緱鍒拌繍綆楃殑緇撴灉錛屾墍浠ュ鏋滄槸++p->n鐨勮瘽鍊煎氨鏄?.
娉ㄦ剰鎴戠殑榪欎釜Demo鐨勪緥瀛愪腑錛岀敱浜庡皢鎵鏈夎〃杈懼紡鐨勫奸兘鏀懼湪涓璧瘋緭鍑猴紝鎵浠ュ墠闈㈢殑鎿嶄綔浼氬獎鍝嶅悗闈㈢殑鍊煎拰琛ㄨ揪寮忋傛瘮濡傜涓涓緭鍑烘椂5錛屼絾鏄細淇敼絎竴涓妭鐐圭殑n鍊煎彉涓?錛屾墍浠ュ悗闈㈢殑杈撳嚭鐩稿簲鐨勮淇敼錛?br>
棰樼洰涓棶鐨勬槸鍊鹼紝鎵浠ョ洿鎺ュ崟涓殑杈撳嚭涔熸槸鍙互鐨勶紝娉ㄦ剰鏇磋兘鐩存帴鐨勭湅鍒扮粨鏋溿?br>鍙﹀寰堢畝鍗曠殑鍑犵偣鏄細
1. p-> 鍜?*p. 鎿嶄綔鏃朵竴鏍鋒ц川錛屼竴鐩存槸鐩存帴鎸囬拡璁塊棶錛屼竴涓槸鐢ㄧ殑鍏堣闂妭鐐癸紝鐒跺悗閫氳繃鑺傜偣鐨勫煙鏉ュ緱鍒扮浉搴旂殑鍊箋?br>
2.榪愮畻鐨勪紭鍏堢駭銆傛敞鎰?>鍜?鎿嶄綔絎︾殑榪愮畻綰ч兘瑕侀珮浜涳紝鎵浠ュ厛榪涜鐨勩?br>
3.絳変環鐨勫啓娉曘俻->n ===========(*p).n
ps:鍓嶆鏃墮棿蹇欑潃鍑嗗鑰冭瘯錛岃冭瘯鍛ㄥ綋鐒舵瘮杈冨繖錛岃屼笖紿佺劧鍙戠幇鏈榪戝崥瀹㈡病鏈夋庝箞鏇存柊浜嗭紝璇存槑鑷繁甯稿父浠ュ悇縐嶅熷彛鏀炬澗瀵規妧鏈殑瀛︿範錛岄剻瑙嗕笅鑷繁錛屾葷粨涓嬪墠孌墊椂闂寸殑浜嬫儏鍚э細
1.鍑嗗鑰冪爺銆傝鏄噯澶囷紝鍏跺疄灝辨槸鐪嬬湅鍗曡瘝錛屼笉榪囪寰楄繕鏄瘮杈冮毦錛屽緢澶氫笉璁よ瘑錛岀敱浜庢病鏈夋嬁鍒頒繚搴曠殑宸ヤ綔offer錛屾墍浠ョ幇鍦ㄥ氨鍙兘鐮撮嚋娌夎垷浜嗭紝鍚庨潰涔熷氨娌℃湁鍙傚姞鎴栬呬笉璁″垝鍙傚姞浠涔堢綉鏄撴父鎴忥紝闃塊噷宸村反錛岀櫨搴︿粈涔堢殑絎旇瘯浜嗭紝姣曠珶鎯寵搗鏉ヨ鏄殤鍋囧疄涔犲氨鑰椾笂2涓鏈堟垨鑰?涓湀鐨勮瘽錛岃冪爺鐨勪簨鎯呭氨浼氬交搴曠殑娉℃堡浜嗐?br>
2.杞冦傚啀嬈″崕涓戒附鐨勮8鑰冿紝澶у閲岄潰鐨勮8鑰冨緢澶氬晩錛屽洓鍏駭閮芥槸錛屼笉榪囧垎鏁頒笉閿欙紝鑰屼笖鎴戜篃姣旇緝瀹規槗婊¤凍錛岄兘鏄?50+錛岃櫧鐒朵笉楂橈紝涓嶈繃涓嬈℃ц繃浜嗭紝鑰屼笖娌℃湁浠樺嚭鐨勬劅瑙夎繕鏄緢濂姐傝繖嬈¤蔣浠惰璁$殑鑰冭瘯錛屽畬鍏ㄩ兘娌℃湁鏃墮棿鍑嗗錛屽洜涓烘湁鏈熶腑鑰冭瘯鍜屾棤灝界殑瀹為獙錛岃櫧鐒惰冨埌杞歡宸ョ▼鍜岃璁℃ā寮忕殑璇濇垜鍏ㄩ儴閮芥槸鎳電殑錛屼笉榪囦笂鍗堥鐩寰楅棶棰樹笉澶э紝鑰屼笅鍗堢殑灝辮寰楁瘮杈冩偓浜嗭紝鎰熻鍑潃涓鐐硅佸簳瀛愶紝鏈変竴鍗婂笇鏈涘惂銆傦紙鏁版嵁嫻佸浘錛岃璁℃ā寮忥紝杞歡宸ョ▼瀹屽叏涓嶄細鍟妦~錛?br>
3.鑰冭瘯鍛ㄣ傛槰澶╂墠鑰冨畬錛屼笅鍗婂鏈熷張瑕佸繖浜嗭紝娌″姙娉曪紝鍏堢紦緙撳惂銆?br>
]]>int main(int argc, char** argv)
int main(int argc, char* argv[])
hello.exe Shiqi Yu
#include <stdio.h>
int main(int argc, char ** argv)
{
int i;
for (i=0; i < argc; i++)
printf("Argument %d is %s.\n", i, argv[i]);
return 0;
}
hello.exe a b c d e
Argument 0 is hello.exe.
Argument 1 is a.
Argument 2 is b.
Argument 3 is c.
Argument 4 is d.
Argument 5 is e.
hello.exe lena.jpg
Argument 0 is hello.exe.
Argument 1 is lena.jpg.
]]>