memcpy函式 使用泛型指標交換任何型別資料

2021-07-24 11:27:56 字數 1064 閱讀 9631

void *memcpy(void *dest,void *src, unsigned int

count)

int swapdata(void *x, void *y, int size) 

//memcpy(void *__dst, const void *__src, size_t __n)

//memcpy功能:由src所指記憶體區域複製n個位元組到dst所指記憶體區域

//⚠️src和dst所指記憶體區域不能重疊,函式返回指向dst的指標

/* //以下示例返回資料a='\0', b='a',因為在操作memcpy(x, y, size)時,由於兩個資料均為1個位元組並且在記憶體中一般是

//連續的,但是分配了2個位元組,導致src和dst記憶體區域重疊了,如果在a和b之間加乙個資料string str = "abcde",

//輸出就正常了,因為給a、b各分配2個位元組就不會重疊了;正常情況應該使用swapdata(&a, &b, 1);

//size應該為待交換資料的大小,而不能隨意指定

char a = 'a';

char b = 'b';

swapdata(&a, &b, 2);

*/memcpy(tmp, x, size);

memcpy(x, y, size);

memcpy(y, tmp, size);

free(tmp);

return

0;}

int main(int argc, const

char * argv)

swapdata(&a, &b, 2)的輸出結果異常分析:

關鍵在於函式memcpy中的引數src和dst所指記憶體區域不能重疊

當傳入的size和資料大小不一致時,會發生意想不到的情況

C 泛型 使用泛型List

一 泛型的優點 效能高。從前面的例子可以看出使用不需進行型別轉換,可以避免裝箱和拆箱操作,提高效能。型別安全。泛型集合對其儲存物件進行了型別約束,不是定義時宣告的型別,是無法儲存到泛型集合中的,保證了資料型別的安全。重用。使用泛型型別可以最大限度地重用 保護型別的安全以及提高效能。使用泛型 使用泛型...

C 泛型 使用泛型List

一 泛型的優點 效能高。從前面的例子可以看出使用不需進行型別轉換,可以避免裝箱和拆箱操作,提高效能。型別安全。泛型集合對其儲存物件進行了型別約束,不是定義時宣告的型別,是無法儲存到泛型集合中的,保證了資料型別的安全。重用。使用泛型型別可以最大限度地重用 保護型別的安全以及提高效能。使用泛型 使用泛型...

泛型結構使用大全(泛型類 泛型介面)

1 泛型類可能有多個引數,此時應將多個引數一起放到尖括號內,比如 2 泛型類的構造器如下 public genericclass 錯誤示例 public genericclass 3 例項化後,操作原來泛型位置的結構必須與指定的泛型型別一致。4 泛型不同的引用不能互相賦值。儘管在編譯時arrayli...