你不能。在 C 中,当您将数组传递给函数时,就decays
函数的作用域而言,它从数组传递给指向类型的指针。
所以,考虑一下:
int arr[16];
sizeof(arr); // sizeof WORKS
myFunction(arr); // Array decays to pointer, sizeof FAILS inside function
myFunction(&arr[0]); // Array decays to pointer, sizeof FAILS inside function
void myFunction(int* ptr)
{
// sizeof(ptr) will not give you what you would expect normally
}
在 C 中执行此操作的传统方法是有一个额外的函数参数,即:
void myFunction(int* ptr, size_t mySize)
{
}
或者,创建自己的结构来保存指向数组的指针及其大小,即:
typedef struct myType {
int* ptrToArray;
size_t arraySize;
} myType_t;
int array[16] = { 0 };
myType_t data;
data.ptrToArray = array;
data.arraySize = 16;
void myFunction(myType_t data)
{
}