隨筆 - 251  文章 - 504  trackbacks - 0
          <2006年11月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          本博客系個(gè)人收集材料及學(xué)習(xí)記錄之用,各類“大俠”勿擾!

          留言簿(14)

          隨筆分類

          收藏夾

          My Favorite Web Sites

          名Bloger

          非著名Bloger

          搜索

          •  

          積分與排名

          • 積分 - 204337
          • 排名 - 283

          最新評論

          在結(jié)構(gòu)中一般使用字符數(shù)組來存儲字符串,那么是否可以用指向字符的指針代替字符數(shù)組? 看如下聲明:

          #define LEN 20

          Struct names{

          Char first[LEN];

          Char last[LEN];

          };

          ?

          Struct pnames{

          Char * first;

          Char * last;

          };

          答案是可以這樣聲明,但是可能會遇到麻煩,你得理解其含義.考慮以下的代碼:

          Struct names veep={“Talia”, “Summers”};

          Struct pnames treas={“Brad”, “Fallingjaw”};

          Printf(“%s and %s\n”,veep.first,treas.first);

           這是一段正確的代碼,也能正常運(yùn)行,但是請思考下字符串存儲在哪里?對于 Struct names 變量 veep 來說,字符串存儲在結(jié)構(gòu)內(nèi)部;這個(gè)結(jié)構(gòu)共分配了 40 字節(jié)來存放兩個(gè)字符串.然而,對于 Struct pnames 變量 treas 來說,字符串存儲在編譯器存儲字符串常量的任何地方.這個(gè)結(jié)構(gòu)存放的只是兩個(gè)地址而已,在系統(tǒng)中它總共占用 8 個(gè)字節(jié). Struct pnames 結(jié)構(gòu)不為字符串分配任何存儲空間.它只適用于在另外的地方已經(jīng)為字符串分配了空間.簡單的說, Struct pnames 結(jié)構(gòu)中的指針應(yīng)該只用來管理那些已經(jīng)創(chuàng)建的而且在程序其他地方已經(jīng)分配過空間的字符串.

           再來看看這個(gè)限制條件在什么情況下升級為問題:

          Struct names accountant;

          Struct pnames attorney;

          Puts(“Enter the last name of your accountant:”);

          Scanf(“%s”,accountant.last);

          Puts(“Enter the last name of your attorney”);

          Scanf(“%s”,attorney.last);

           語法方面來說,這段代碼沒有問題,但是考慮下把輸入存儲到哪里了?對會計(jì)師來說,他的名字存儲在 accountant 變量的最后一個(gè)成員中;這個(gè)結(jié)構(gòu)有一個(gè)用來存放字符串的數(shù)組.對律師來說, scanf() 把字符串放到由 attorney.last 給出的地址中.因?yàn)檫@是個(gè)沒有初始化的變量,所有該地址可能是任何值,程序就可以把名字放在任何地方.

           所以,我們?nèi)绻枰粋€(gè)結(jié)構(gòu)來存儲字符串,請使用字符數(shù)組成員.存儲字符指針有它的用處,但也有被嚴(yán)重誤用的可能.

          ?

          ?

          ?

          posted on 2006-11-10 16:15 matthew 閱讀(494) 評論(0)  編輯  收藏 所屬分類: 閱讀筆記
          主站蜘蛛池模板: 普陀区| 南投县| 麻阳| 抚宁县| 台安县| 晴隆县| 徐汇区| 措美县| 汪清县| 海林市| 广东省| 兴宁市| 洛阳市| 绥宁县| 深圳市| 来凤县| 县级市| 兴宁市| 英德市| 南平市| 汪清县| 石河子市| 平罗县| 理塘县| 安徽省| 若尔盖县| 江门市| 嘉义市| 湘乡市| 桃园市| 阳信县| 柯坪县| 迁安市| 通河县| 六安市| 东乡县| 岳西县| 青浦区| 绥滨县| 文安县| 靖州|