memcpy拷貝數(shù)組 為什么c 中數(shù)組不能直接拷貝給另一數(shù)組?
為什么c 中數(shù)組不能直接拷貝給另一數(shù)組?如果要直接交換行,必須使用指針。例如:將LG數(shù)組復(fù)制到CHS數(shù)組:long LG[20];byte CHS[200];CHS=(char*)&lg[0]
為什么c 中數(shù)組不能直接拷貝給另一數(shù)組?
如果要直接交換行,必須使用指針。例如:將LG數(shù)組復(fù)制到CHS數(shù)組:
long LG[20];
byte CHS[200];
CHS=(char*)&lg[0];
這是直接的。記住,一定要用指針。
其次,可以使用memcpy函數(shù)來解決問題。
函數(shù)原型為void*memcpy(void*目的地,void*源,無符號(hào)n)。該函數(shù)將源內(nèi)存地址開頭的幾個(gè)字節(jié)復(fù)制到目標(biāo)內(nèi)存地址,即從源內(nèi)存地址復(fù)制n個(gè)字節(jié)到目標(biāo)內(nèi)存地址。
希望對(duì)您有所幫助。
如何實(shí)現(xiàn)數(shù)組之間的拷貝?
VB6使用copymemory直接復(fù)制數(shù)組?
copymemory()函數(shù)說明:將內(nèi)存塊的數(shù)據(jù)從一個(gè)位置復(fù)制到另一個(gè)位置。
Function prototype
void CopyMemory(pvoid destination,const void*source,size) T length
]參數(shù)
destination要復(fù)制的內(nèi)存塊的目標(biāo)地址。
Source要復(fù)制的內(nèi)存塊的源地址。
Length指定要復(fù)制的內(nèi)存塊的大?。ㄗ止?jié))
返回值。此函數(shù)是void類型,沒有返回值。
注意,如果目標(biāo)塊與源塊重疊,則結(jié)果不可預(yù)測。移動(dòng)內(nèi)存可以解決這個(gè)問題。
請(qǐng)注意,CopyMemory和MoveMemory只是rtlmovememory的別名
示例代碼段
char szname[50]=“shower”
char szfriend[]=“polelf,OO”
CopyMemory(szname 4,szfriend,10)
OutputDebugString(szname)//輸出結(jié)果是“shower,polelf,OO“
VB6語句:
private declare sub CopyMemory Lib”kernel32”Alias”rtlmovemory“(目標(biāo)為任意,源為任意,ByVal長度為任意)