<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            sun 的一個面試題

            時間:2024-09-04 22:24:44 綜合指導 我要投稿
            • 相關推薦

            sun 的一個面試題

            •   作者:czzhou | 來源:網友博客 | 發布時間:2007-05-16 | 點擊:0

              sun 的一個面試題

            •   /* file1.c */

            •   char buff[128];

            •   /* file2.c */

            •   extern char *buff; /* Notice: extern char buff[] */

            •   int main()

            •   {

            •   *buff = a;

            •   return 0;

            •   }

            •   結果如下:

            •   $ gcc file1.c -c

            •   $ gcc file2.c -c

            •   $ gcc file1.o file2.o -o ff

            •   $ ./ff

            •   Segmentation Fault

            •   問,為何有這個結果?

            •   我試了一下,在file2中換成extern char buff[]就可以,

            •   但不知道為什么了..

            •   論壇上的一種解釋:

            •   ---------------------

            •   數組和指針本來是完全不同的東西

            •   數組里面放的是數組元素的值, 指針放的是一個地址

            •   編譯器為了處理起來方便,經常把數組當成指針處理

            •   比如:

            •   int buf[5]={0};

            •   int *p = buf;

            •   這個時候編譯器知道buf是一個數組

            •   所以會把數組的地址而不是它的內容傳給p指針

            •   但是如果數組是在另一個編譯單元(編譯器對每個編譯單元的處理是獨立的)

            •   指針p它不知道自己指向的是一個數組

            •   鏈接的時候也沒有buf是一個數組的信息

            •   所以最后鏈接的時候, p鏈接的是buf的內容而不是它的地址

            •   我在linux下的實驗結果

            •   ---------------------------------

            •   在file1.c里邊

            •   char buf[ 128 ] = {0x10, 0x20, 0x30, 0x40};

            •   在file2.c里邊

            •   extern int buf// 注意這里強制把file1.c里邊的char buf轉換成整形

            •   int main()

            •   {

            •   printf("buf = %x\n", buf );

            •   }

            •   則輸出的結果就是

            •   buf = 40302010

            【sun 的一個面試題】相關文章:

            SUN認證11-12

            面試題精選02-18

            分享面試題目 教育職業面試題11-20

            熱門就業行業面試題精選:編輯行業面試題!11-19

            Microsoft 面試題11-19

            蘋果 面試題11-19

            熱門就業行業面試題精選 銷售行業面試題11-20

            熱門就業行業面試題目精選:行政行業面試題11-20

            銀行招聘面試題11-26

            經典面試題 及答案分析11-20

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院