函数参数中int*array和int array []之间的区别

Ale*_*lex 10 c++ arrays pointers parameter-passing

我已经看到,如果函数参数是"int arr []"或"int*arr",数组值将会改变.区别在哪里?

int array []:

void myFunction(int arr[], int size) {

    for (int i = 0; i < size; ++i)
        arr[i] = 1;
}
Run Code Online (Sandbox Code Playgroud)

int*数组:

void myFunction(int * arr, int size) {

    for (int i = 0; i < size; ++i)
        arr[i] = 1;
}
Run Code Online (Sandbox Code Playgroud)

这两个函数都会更改数组值.

int main(){

     int array[3];

     array[0] = 0;
     array[1] = 0;
     array[2] = 0;

     myFunction(array, 3);

     return 0;

 }
Run Code Online (Sandbox Code Playgroud)

Rei*_*ica 5

没有区别.两种函数类型(在调整之后)都是"将指针指向intint返回的函数void".这只是C++的一个语法怪癖:[]非引用类型的函数参数的最外层是同义词*.