找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1999|回復(fù): 10
收起左側(cè)

關(guān)于C語言數(shù)組拷貝

[復(fù)制鏈接]
ID:734017 發(fā)表于 2024-6-6 19:50 | 顯示全部樓層 |閱讀模式
函數(shù)1    temp arr[20]={};
函數(shù)2長度不固定,最大20個(gè)元素,以0x33結(jié)尾    arr[]={};

把函數(shù)2拷貝到函數(shù)1去,單片機(jī)可以用sizeof函數(shù)配合memcpy函數(shù)嗎。
memcpy是內(nèi)存復(fù)制函數(shù)未嘗試過在單片機(jī)使用。

回復(fù)

使用道具 舉報(bào)

ID:734017 發(fā)表于 2024-6-7 22:08 | 顯示全部樓層
3212432202 發(fā)表于 2024-6-7 17:07
為方便說明,定義兩個(gè)整型數(shù)組a,b,并實(shí)現(xiàn)將a中的值賦值到b中。 int a[4] = {1,2,3,4}, b[4];  1、 通過數(shù) ...

sizeof(a)是所有節(jié)字?jǐn)?shù),memcpy(b,a,sizeof(a));可以適用int 和char 是吧,謝謝
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2024-6-7 17:43 | 顯示全部樓層
yzw846562238 發(fā)表于 2024-6-7 13:28
你這個(gè)寫法不對,memcpy是按字節(jié)拷貝的,不需要/sizeof(arr[0])

受教了
回復(fù)

使用道具 舉報(bào)

ID:879348 發(fā)表于 2024-6-7 17:18 | 顯示全部樓層
自己封裝一個(gè)就行了,為什么非得用標(biāo)準(zhǔn)的函數(shù)處理非標(biāo)準(zhǔn)的問題
回復(fù)

使用道具 舉報(bào)

ID:1124236 發(fā)表于 2024-6-7 17:07 | 顯示全部樓層
為方便說明,定義兩個(gè)整型數(shù)組a,b,并實(shí)現(xiàn)將a中的值賦值到b中。 int a[4] = {1,2,3,4}, b[4];  1、 通過數(shù)組遍歷,逐個(gè)賦值。 定義循環(huán)變量int i; for(i = 0; i < 4; i ++) b[i] = a[i]; 該程序功能為遍歷數(shù)組a,逐個(gè)賦值到數(shù)組b對應(yīng)元素中。  2、 借助內(nèi)存復(fù)制函數(shù)memcpy,整體賦值。 void *memcpy(void *dst, void *src, size_t size); 這個(gè)函數(shù)的功能為將src上,大小為size字節(jié)的數(shù)據(jù)賦值到dst上。 調(diào)用該函數(shù)時(shí)需要引用頭文件cstring,即 #include 賦值數(shù)組的代碼為 memcpy(b,a,sizeof(a));
回復(fù)

使用道具 舉報(bào)

ID:1124222 發(fā)表于 2024-6-7 16:48 | 顯示全部樓層
可以沒有任何問題
回復(fù)

使用道具 舉報(bào)

ID:458247 發(fā)表于 2024-6-7 13:28 | 顯示全部樓層
lkc8210 發(fā)表于 2024-6-7 10:01
memcpy(temp_arr,arr,sizeof(arr) / sizeof(arr[0]));

你這個(gè)寫法不對,memcpy是按字節(jié)拷貝的,不需要/sizeof(arr[0])
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2024-6-7 10:01 | 顯示全部樓層
memcpy(temp_arr,arr,sizeof(arr) / sizeof(arr[0]));
回復(fù)

使用道具 舉報(bào)

ID:458247 發(fā)表于 2024-6-7 08:56 | 顯示全部樓層
可以用,但是你要保證數(shù)組1的長度≥數(shù)組2;然后你是要拷貝到0x33那個(gè)字節(jié),后面都不拷貝?那這樣的話就不能用這個(gè)方法了。另外以0x33做結(jié)尾是否有點(diǎn)草率,萬一你前面的數(shù)據(jù)中包含了0x33這個(gè)字符呢
回復(fù)

使用道具 舉報(bào)

ID:879809 發(fā)表于 2024-6-7 06:49 | 顯示全部樓層
sizeof只能判斷正常的0x0結(jié)束符,無法判斷樓主自定義的0x33結(jié)束符,所以完全不可能。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2024-6-7 01:06 | 顯示全部樓層
聲明兩個(gè)結(jié)構(gòu)體,在結(jié)構(gòu)體中聲明數(shù)組,然后就可以直接用
結(jié)構(gòu)體1 = 結(jié)構(gòu)體2
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表