我已经写了一个函数,并在这里问了一些关于它的问题。它工作得很好,我可以调用它并使用它。但有些事情让我头脑混乱。这是我刚才提到的函数原型:uint8 srcBuf []和uint8 * srcBuf
void writeToEEPROM(uint8 srcBuf[], uint32 byteCount, int writePtr);
我可以通过发送我的数组分配给它,像这样调用这个函数:
uint8 mysrcBuf[10];
writeToEEPROM(mysrcBuf,10,0); // This is working.
在函数原型,它得到*srcBuff
和,如我知道,*srcBuff
是地址srcBuff
中的值。我的意思是,星号(*
)操作数实际上读取该地址的值,不是吗?但是我发送的是mysrcBuf
,这是数组第一个元素的地址。
如果我宣布类似下面的功能,它仍然有效:
void writeToEEPROM(uint8 * srcBuf, uint32 byteCount, int writePtr);
难道这些语句相同?:
uint8 srcBuf[]
和uint8 * srcBuf
它不提醒我,或者我会出现问题更改声明并以相同的方式调用它。
(很抱歉,如果有这个问题的一个副本。我已经搜索指针很重要,但它仍然让我困惑的时候。)
您是否在发布之前进行搜索? – trojanfoe
请参阅[差异之间的阵列和数组指针功能在C](http://stackoverflow.com/questions/5573310/difference-between-passing-array-and-array-指针功能在C) –
相关:[数组和指针通过一个实际的例子之间的异同](http://stackoverflow.com/questions/1782369)。 – DevSolar