在 Jens Gustedt 的 Modern C 一書中,作者做了以下陳述,
- 在以下小節中,我們將介紹句法方面(語法)和三個不同的語意方面:宣告部分(事物是什么)、物件定義(事物在哪里)和陳述(事物應該做什么)。
- i 和 A 的宣告宣告了變數,它們是允許我們存盤值的命名項。最好將它們可視化為一種可能包含特定型別“某物”的盒子:
從概念上講,區分盒子本身(物件)、規格(其型別)、盒子內容(其值)以及寫在盒子上的名稱或標簽(識別符號)是很重要的。在這樣的圖表中,我們把 ?? 如果我們不知道物品的實際價值。
- 通常,宣告只指定識別符號所指的物件的種類,而不是識別符號的具體值是什么,也不是在哪里可以找到它所指的物件。這個重要的角色是由一個定義來填補的。
--關于上述陳述的問題--
問題 1。- 作者的第一個和第三個陳述暗示定義指定識別符號所指的物件可以在哪里找到。'where' 在這里是什么意思,特別是如何在定義中指定識別符號的具體值與識別符號所指的物件的位置相同/不同?
問題 2。- 從陳述句 2 中,“從概念上講,區分盒子本身(物件)、規格(其型別)、盒子內容(其值)以及寫在盒子上的名稱或標簽很重要(識別符號)。意思是?為什么這里的“盒子”是一個物件而不是“盒子”中的值?
uj5u.com熱心網友回復:
物件是可以存盤值的地方。這是該語言使用的術語。
形式上,一個物件是一個
執行環境中的資料存盤區域,其內容可以表示值

Q.2:分配記憶體的4個位元組,里面的值為123,廣義上稱為物件。你有一個有 4 個房間和一個地址的房子。但不要忘記,您也可以將您的房子命名為“dexter 的家”。因此,'a'為方便起見,在撰寫 C 代碼時,您可以使用以下名稱/標簽來參考特定的記憶體位置。
請注意,作者認為所有這四個位元組框都被視為一個框,double實際上需要八個位元組(在 64 位上),但為簡單起見,作者繪制了一個框。
uj5u.com熱心網友回復:
區分很重要
- 盒子本身(物體)
- 規范(其型別)
- 盒子內容(它的值)
- 以及寫在盒子上的名稱或標簽(識別符號)
那地址呢?是不是缺少一條線
- 盒子的位置(它的地址)
我沒有看到呼叫變數物件有多大優勢,而呼叫物件框則更少。
Gustedt 給出了一些很好的解釋和例子,但他不是很系統。
定義和地址:
我猜他心里有這個:
int *p = malloc(...);
這里的定義確定了“資料存盤區域”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473150.html

