使用new建立動態結構
在執行時建立陣列優於在編譯時建立陣列,對於結構亦如此。可以在程式執行時為結構分配所需要的空間,通過使用new運算子實現。
建立步驟分兩步進行:
1:建立動態結構:需要同時使用結構型別和new運算子。例如,建立乙個未命名的inflatable型別,將其賦值給指標,
這種句法和c++內建型別用法相同。inflatable* pt = new inflatable ;
2:訪問成員變數:有兩種方法訪問成員變數,
①建立動態結構時,不能使用成員運算子來訪問,因為此時結構沒有名稱,只是知道它的位址而已。c++為這種情況提供了專門的運算子:箭頭運算子(->)。該運算子由連字元和大於號組成,可用於指向結構的指標來訪問成員變數,例如,
pt->price是被指向結構的price成員
②另一種訪問成員變數的方法是,(*pt).price方式,*pt是被指標指向的值--結構的本身,由於*pt是乙個結構,因此,(*pt).price是該結構的price成員。
下面是建立動態結構和訪問成員變數的示例:
#include using namespace std;
struct inflatable
;int main()
輸出:
enter name of inflatable:
fhenter volume of inflatable:
1.4enter price of inflatable:
27.99
《C Primer Plus》 復合型別
typename arrayname arraysize 要求arraysize在編譯是已知,不能是變數。陣列作為由基本型別組成的復合資料型別,arrayname要強調是對應基本資料型別組成的陣列 特定陣列 通過下標或索引單獨訪問各個元素 可能引發陣列越界的問題,int a 20 容易錯誤訪問a 2...
c primer plus復合型別之指標
指標是乙個變數,其儲存的是值的位址,而不是值本身。了解 在討論指標之前,我們先看一看如何找到常規變數的位址,只需對變數應用位址運算子 就可以獲得他的位置,例如 int cups 6 double donuts 4.5 cout cups value 程式輸出 cups value 6 and cup...
c primer plus 復合型別之陣列
編譯器會把陣列名轉換為乙個指標常量,是陣列中的第乙個元素的位址,型別就是陣列元素的位址型別,如 int a 10 陣列名a若出現在表示式中,如int p a 那麼它就轉換為第乙個元素的位址,等價於int p a 0 只有兩種情況下例外 第一種是對陣列名使用sizeof運算子 sizeof a 這將會...