標題: 關于C語言數組拷貝 [打印本頁]

作者: happy2058    時間: 2024-6-6 19:50
標題: 關于C語言數組拷貝
函數1    temp arr[20]={};
函數2長度不固定,最大20個元素,以0x33結尾    arr[]={};

把函數2拷貝到函數1去,單片機可以用sizeof函數配合memcpy函數嗎。
memcpy是內存復制函數未嘗試過在單片機使用。


作者: Y_G_G    時間: 2024-6-7 01:06
聲明兩個結構體,在結構體中聲明數組,然后就可以直接用
結構體1 = 結構體2
作者: rundstedt    時間: 2024-6-7 06:49
sizeof只能判斷正常的0x0結束符,無法判斷樓主自定義的0x33結束符,所以完全不可能。
作者: yzw846562238    時間: 2024-6-7 08:56
可以用,但是你要保證數組1的長度≥數組2;然后你是要拷貝到0x33那個字節(jié),后面都不拷貝?那這樣的話就不能用這個方法了。另外以0x33做結尾是否有點草率,萬一你前面的數據中包含了0x33這個字符呢
作者: lkc8210    時間: 2024-6-7 10:01
memcpy(temp_arr,arr,sizeof(arr) / sizeof(arr[0]));
作者: yzw846562238    時間: 2024-6-7 13:28
lkc8210 發(fā)表于 2024-6-7 10:01
memcpy(temp_arr,arr,sizeof(arr) / sizeof(arr[0]));

你這個寫法不對,memcpy是按字節(jié)拷貝的,不需要/sizeof(arr[0])
作者: Eren0528    時間: 2024-6-7 16:48
可以沒有任何問題
作者: 3212432202    時間: 2024-6-7 17:07
為方便說明,定義兩個整型數組a,b,并實現將a中的值賦值到b中。 int a[4] = {1,2,3,4}, b[4];  1、 通過數組遍歷,逐個賦值。 定義循環(huán)變量int i; for(i = 0; i < 4; i ++) b[i] = a[i]; 該程序功能為遍歷數組a,逐個賦值到數組b對應元素中。  2、 借助內存復制函數memcpy,整體賦值。 void *memcpy(void *dst, void *src, size_t size); 這個函數的功能為將src上,大小為size字節(jié)的數據賦值到dst上。 調用該函數時需要引用頭文件cstring,即 #include 賦值數組的代碼為 memcpy(b,a,sizeof(a));
作者: wufa1986    時間: 2024-6-7 17:18
自己封裝一個就行了,為什么非得用標準的函數處理非標準的問題
作者: lkc8210    時間: 2024-6-7 17:43
yzw846562238 發(fā)表于 2024-6-7 13:28
你這個寫法不對,memcpy是按字節(jié)拷貝的,不需要/sizeof(arr[0])

受教了
作者: happy2058    時間: 2024-6-7 22:08
3212432202 發(fā)表于 2024-6-7 17:07
為方便說明,定義兩個整型數組a,b,并實現將a中的值賦值到b中。 int a[4] = {1,2,3,4}, b[4];  1、 通過數 ...

sizeof(a)是所有節(jié)字數,memcpy(b,a,sizeof(a));可以適用int 和char 是吧,謝謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1