指向数组作为func参数的C指针
我在互联网上看到,指向数组的指针和指向数组第一个元素的指针是一样的。但在CooCox中,下一个调用错误:指向数组作为func参数的C指针,c,C,我在互联网上看到,指向数组的指针和指向数组第一个元素的指针是一样的。但在CooCox中,下一个调用错误: //Get Arr uint8_t TestDataArr[10]; //Func get pointer to arr void InitData (TestPacks *Data) { //Some code } //This call error InitData(&TestDataArr) //But this is norm InitData(&TestDataAr
//Get Arr
uint8_t TestDataArr[10];
//Func get pointer to arr
void InitData (TestPacks *Data)
{
//Some code
}
//This call error
InitData(&TestDataArr)
//But this is norm
InitData(&TestDataArr[0])
为什么会这样
InitData(&TestDataArr)
不等于
InitData(&TestDataArr[0])
原因TestDataArr[0]
等于*TestDataArr
,然后InitData(&TestDataArr[0])
等于InitData(&*TestDataArr)
或InitData(TestDataArr)
。
你看,那
InitData(&TestDataArr)
是TestDataArr
的地址,并且
InitData(TestDataArr)
只是阵列。
那也是不同的类型 因为他们不是一回事。。。指向数组的指针的类型与指向数组第一个元素的指针的类型不同,即使地址重合。不,它们不是一回事。不要相信你在互联网上找到的所有东西。请阅读本文以获得更详细的解释(不确定它是否是正确的dup)在第一次函数调用中删除
&
,这样会起作用。它们是相同的地址,只是不同的类型。对不起,我弄错了。func init为“void InitData(uint8_*Data)”。类型是相等的否,它们不指向相同的内存&TestDataArr
是指针,指向TestDataArr
-变量--(类型为uint8\u t**
/uint8\u t[10]*
)。所以它指向指向数据的指针TestDataArr
直接指向数据代码>执行&TestDataArr
会导致uint8\u t(*)[10]
。它不会产生uint8\u t**
。打印它们。你得到了什么?“它指向指向数据的指针”为什么你认为这样的指针存在于内存中的任何地方?