C C 語言指標的強大用法之陣列當作指標使用

2021-08-10 23:29:53 字數 515 閱讀 8582

在訊息互動的結構體種,可能存在某些字段長度不固定,這時候我們很容易想到指標型別去實現這種功能,但是指標的增加玩玩會導致我們需要增加其記憶體的申請和釋放,而且

在我們呼叫memcpy進行拷貝的時候只能進行淺拷貝(至於深拷貝和淺拷貝的概念大家不知道的網上查下就明白了),這會帶來很多的不便。實際過程中,我們可以使用陣列代替指標

的用法去避免這些不便,下面通過具體的例子來說明這個問題:

假如我們有兩個任務之間需要進行訊息互動,互動的結構體如下:

上面第乙個結構體是任務之間互動的基本型別(上面的pack偽指令告訴編譯器1位元組對齊,這是為了後面動態申請記憶體位元組對齊問題),由於其內容結構不固定,可能是下面兩種當中的一種,所以這個時候使用固定型別無法做到了,這裡我們進行下面的操作:

傳送訊息型別1:

傳送訊息型別2:

接收的時候根據訊息型別不同作不同的處理:

這樣我們就使用了統一的結構型別傳遞多種不同型別的訊息了,操作起來也比較方便,不過程式閱讀起來比較晦澀難度,但是有時候使用這種方式的確可以帶來很大的便捷。

C C 語言指標的強大用法之減少記憶體申請次數

在我們編寫程式時,可定會遇到下面比較複雜的結構體,結構體裡面存在指標型別的結構,指標型別的結構又存在指標資料,這時候我們分配記憶體的時候自然而然會想到分配多次,同時還要釋放多次,這樣不但比較繁瑣,而且效率也比較低。下面我們舉例 複雜結構體定義 假設我們要定義乙個container型別的指標,並且含有...

C C 語言指標用法詳解 (六) 指標和陣列

指標和陣列基本等價的原因在於指標算術和c 內部處理陣列的方式。c primerplus 第五版 在多數情況下,c 將陣列名解釋為陣列中第乙個元素的位址。int arr 10 int p arr cout 總結 arrayname i 等價於 arrayname i 指標陣列 array of poi...

C語言 陣列指標和指標陣列的用法 區別

2.指標陣列 陣列指標和指標陣列,從字面上區分的方法就是 本質看最後兩個字。例如陣列指標的本質就是乙個指標,乙個指向陣列的指標 而指標陣列的本質就是乙個陣列,乙個成員都是指標的陣列。陣列指標,即指向乙個陣列的指標。可以指向一維陣列,也可以指向二維陣列 三維及以上陣列一般不用 int p n null...