数组和指针之间的差异作为形式参数

时间:2019-02-16 04:33:11

标签: c++ arrays c++11 pointers function-pointers

我对数组和指针作为函数中的形式参数有些困惑。有人可以向我解释这些函数声明之间的区别吗?它们是否全部相同,是否接受相同的参数?

// 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);

我对吗?

0 个答案:

没有答案