我在这里读到: C: differences between char pointer and array char指针和char数组不一样。因此,我希望这些是重载函数:
#include <iostream>
using namespace std;
int function1(char* c)
{
cout << "received a pointer" << endl;
return 1;
}
int function1(char c[])
{
cout << "received an array" << endl;
return 1;
}
int main()
{
char a = 'a';
char* pa = &a;
char arr[1] = { 'b' };
function1(arr);
}
然而,在构建时,我得到错误C2084:function&#39; int function1(char *)&#39;已经有一个身体。为什么编译器似乎认为char指针与char数组相同?
答案 0 :(得分:0)
因为当你将一个数组传递给一个函数时,它会神奇地变成一个指针。
您的两个功能 相同。
以下字面*相同:
void foo(int arr[42]);
void foo(int arr[]);
void foo(int* arr);
(*不是词汇,当然:P)
这个历史性的C奇怪是许多人错误地认为“数组是指针”的主要原因。它们不是:这只是一个引起混淆的边缘案例。