【发布时间】:2020-03-04 13:21:51
【问题描述】:
我正在做以下事情:
假设我有一个数组:
uint8 Array[100] = {25,33,48,20,.....};
存在执行以下操作的函数:
void getValues(uint8 **pvalues)
{
*pvalues =&Array[0]; //Saves the address of first element of Array[]
}
稍后在我的代码中我有以下内容:
uint8 *pmyValues;
uint8 myBuffer[100];
uint8 i=0;
getValues(&pmyValues)
for (i;i<100;i++)
{
(void)memcpy(&myBuffer[i], (uint8*)&pmyValues[i], sizeof(uint8));
}
我想在我自己的内部缓冲区 pmyBuffer 中保存来自 Array ow 的值 调试后我看到 pmyBuffer 包含一个指针数组!? 不知道我做错了什么?我是 C 中指针的新手,如果有人能提供帮助,我将不胜感激。
谢谢!
【问题讨论】:
-
pmyBuffer在哪里定义?看起来您正在尝试逐字节复制getValues,但您对memcpy的调用是一次复制8 个字节。此外,您可以通过一次调用memcpy来复制整个数组,而无需循环。 -
复制粘贴失败。现已更正。
-
对
memcpy的更改是否解决了您的问题?你可以在没有循环的情况下做memcpy(myBuffer, pmyValues, 100 * sizeof(uint8));。 -
具体来说,是什么让您认为
pmyValues“包含”一个指针数组?它包含的内容——或者至少是如何解释的——取决于它的类型。它是一个指向uint8_t的指针,它的值指向的东西(如果有的话)是uint8_t,可能是相同数组的第一个。 -
你的代码应该复制了
Array的内容。也许您的调试器无法猜出您想要的格式...
标签: c arrays pointers double-pointer