假設我給出了一個void* data
數組,並要求使用2種不同數據類型的信息填充它:int數組和一個字符串。在C中輸入類型 - Ints和Char *
void* data;
int numbers[9];
char* title;
我明白輸入數字到數據陣列,我需要強制轉換這樣的:
memcpy((int*)data, numbers, sizeof(numbers));
可是我該怎麼辦,如果我想提出title
在號碼後,地址被複制到數據中?
在此先感謝。
假設我給出了一個void* data
數組,並要求使用2種不同數據類型的信息填充它:int數組和一個字符串。在C中輸入類型 - Ints和Char *
void* data;
int numbers[9];
char* title;
我明白輸入數字到數據陣列,我需要強制轉換這樣的:
memcpy((int*)data, numbers, sizeof(numbers));
可是我該怎麼辦,如果我想提出title
在號碼後,地址被複制到數據中?
在此先感謝。
沒有,有沒有必要與void *
鍵入強制轉換,因爲memcpy()
作品:
memcpy(data, numbers, sizeof numbers);
而且不需要()
s的sizeof
當應用到任何東西,不是一個類型的名字。
對於第二部分,你需要計算地址:
memcpy((char *) data + sizeof numbers, title, 1 + strlen(title));
在這裏,我認爲title
是一個0結尾的字符串。 data
到char *
的演員陣容是必要的,因爲您不能使用void *
做指針運算。
我當時就是這麼想的,但卻是以一種複雜的方式來做這件事。感謝一堆! – user287474
假設'res'實際上是指您的第一個片段中的數據? – WhozCraig
你必須計算標題起點的正確地址嗎? (在這種情況下9個整數值之後)還是你問如何做指針算術? – UnholySheep