[問題]access static variable 的權限問題

看板C_and_CPP作者 (~影~)時間9年前 (2016/08/17 01:33), 編輯推噓9(9019)
留言28則, 7人參與, 最新討論串1/1
各位高手好,我最近時常在面試,職缺為軟韌工程師,有一個類型的題目, 不斷被問到,考到,但還是不了解真正的答案: 這類題目的核心就在問,對static variable而言,不同的function,block,module對它 存取的權限為何? 首先function,block,module 3者之間真正的定義,我就不太了解了, 但是題目真的就這樣問,是不是這3個單字在C裡面有很明確的定義呢?謝謝大家。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.170.136 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1471368785.A.20C.html

08/17 03:29, , 1F
不了解 function 和 block 的定義…還是不要當工程師比
08/17 03:29, 1F

08/17 03:29, , 2F
較好……
08/17 03:29, 2F

08/17 04:11, , 3F
你先說說你的認知裡這三個東西是什麼
08/17 04:11, 3F

08/17 06:53, , 5F
module是什麼?
08/17 06:53, 5F

08/17 07:03, , 6F
查了一下是類似於translation unit
08/17 07:03, 6F

08/17 11:35, , 7F
我認為整個C裡面,只有兩種東西,一個是main()function
08/17 11:35, 7F

08/17 11:37, , 8F
一個是普通的function,main()就是整個程式發動的起點,
08/17 11:37, 8F

08/17 11:38, , 9F
至於block,module,這幾個字雖然常常看到,
08/17 11:38, 9F

08/17 11:39, , 10F
但還是不很清楚真正的定義,請各位高手可以幫忙一下,謝
08/17 11:39, 10F

08/17 12:02, , 11F
08/17 12:02, 11F

08/17 20:14, , 12F
Block 應該是指括號{}圍起來的地方 module c/c++目前
08/17 20:14, 12F

08/17 20:14, , 13F
還沒有?
08/17 20:14, 13F

08/17 20:58, , 14F
08/17 20:58, 14F

08/17 23:40, , 15F
module 在 C++ 裡面一般是跟 translation unit 差不多
08/17 23:40, 15F

08/17 23:41, , 16F
一支程式可以有不只一個原始碼檔案, 每個 .cpp 皆是一個
08/17 23:41, 16F

08/17 23:42, , 17F
translation unit (翻譯單位), 它就是編譯時的單位
08/17 23:42, 17F

08/17 23:42, , 18F
一個 .cpp 編出一個目的檔 .o 或 .obj
08/17 23:42, 18F

08/17 23:42, , 19F
一或多個 .obj 連結而成桯式
08/17 23:42, 19F

08/17 23:43, , 20F
static 的其中一個用法即是限定此變數限這 TU 存取
08/17 23:43, 20F

08/17 23:44, , 21F
(題外話, 單講 module 其實可能指更大的程式模組
08/17 23:44, 21F

08/17 23:44, , 22F
但因為這裡談的是 static 變數因此指的只是單一 TU 而已)
08/17 23:44, 22F

08/17 23:45, , 23F
而 block 如其他人所言, 是指 { } 圍起來的範圍
08/17 23:45, 23F

08/17 23:45, , 24F
{ } 不只函數有用到, 其他敘述也會出現
08/17 23:45, 24F

08/17 23:46, , 25F
而且你還能天外飛來一筆直接開一個 { } 出來
08/17 23:46, 25F

08/17 23:46, , 26F
這個東西跟 static 的交互作用就留給你自己去查了
08/17 23:46, 26F

08/18 01:47, , 27F
推樓上 不過天外飛來一筆的大括號只能在另一個 block 裡
08/18 01:47, 27F

08/18 01:47, , 28F
出現 XD
08/18 01:47, 28F
文章代碼(AID): #1NiqvH8C (C_and_CPP)