簡體   English   中英

來自C中指針的變量賦值

[英]variable assignment from pointers in C

我有一個緩沖區,其中包含結構的原始信息。 我想創建一個函數,該函數接受緩沖區並返回所述類型的結構。

my_struct func(uin8t_t* buf){
    uin8t_t field1 = *buf;
    uin8t_t[3] = *(buf + 1);
    ...
    return 
}

假設field1和field2是結構中的字段,則field1的值是buf的第一位,而field2的值是buf的第二,第三和第四字節嗎?

將問題歸納為一個問題:變量分配是否簡單地從變量類型所指示的值中獲取期望的位數?

謝謝

執行任務時,可能會發生兩件事:

  1. 您的變量具有相同的類型,在這種情況下,sizeof(type)個字節從一個內存位置復制到另一個內存位置(這是您的情況,大小為1)。

  2. 在這種情況下,某些隱式強制轉換會導致分配所涉及的變量的數據類型不同。 根據一般經驗,您可以認為復制的字節數是所涉及的2個變量大小中的最小值。

請注意,如果嘗試對struct變量進行賦值,則必須考慮其成員之間的最終填充。

假設field2實際上是第二個聲明,如下所示:

uin8t_t field2[3] = *(buf + 1);

該行不會將3個字節復制到field2數組中,並且很可能是語法錯誤。 Memcpy可能是更好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM