的我喜歡爾德沉降約memset的正確使用的參數。Ç約定 - 如何在一個結構歸零的陣列字段(語言是C)當在陣列字段中使用memset的一個結構
讓我們說,我們有以下結構:
struct my_struct {
int a[10]
}
以下哪實現更正確?
選項1:
void f (struct my_struct * ptr) {
memset(&ptr->a, 0, sizeof(p->a));
}
選項2:
void f (struct my_struct * ptr) {
memset(ptr->a, 0, sizeof(p->a));
}
注:
如果該字段是一個基本類型或另一個結構(如 'INT')的選項2不起作用,如果它是一個指針(int *),選項1將不起作用。
請指教,
對您希望歸零的元素的類型使用正確的符號。你已經確定了所需的兩個符號;沒有一種符合所有情況的符號。對於數組,你不使用'&';對於其他任何事情你都這樣做。 –
如果'a'是一個指針,兩個選項都不會起作用,兩者都會默默地給出錯誤的行爲。 –