我对数组和指针作为函数中的形式参数有些困惑。有人可以向我解释这些函数声明之间的区别吗?它们是否全部相同,是否接受相同的参数?
// In case of using char
void printArray(const char arr[], const size_t arraySize);
void printArray(const char* arr, const size_t arraySize);
void printArray(const char* arr[], const size_t arraySize);
// In case of using int
void printArray(const int arr[], const size_t arraySize);
void printArray(const int* arr, const size_t arraySize);
void printArray(const int* arr[], const size_t arraySize);
而且我还认为带有形式参数int* arr
的函数可以同时接受这两者:
int val{5}
int valArray[] {1, 2, 3};
int* ptrVal = &val;
int* ptrValArray {valArray};
printArray(&val, 1);
printArray(valArray, 3);
printArray(&valArray, 3);
printArray(ptrVal, 1);
printArray(ptrValArray , 3);
我对吗?