c++ - 函数参数中 int * array 和 int array[] 的区别

标签 c++ arrays pointers parameter-passing

我看到如果函数参数是“int arr[]”或“int * arr”,数组值会改变。哪里不一样了?

整数数组[]:

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

    for (int i = 0; i < size; ++i)
        arr[i] = 1;
}

整数 * 数组:

void myFunction(int * arr, int size) {

    for (int i = 0; i < size; ++i)
        arr[i] = 1;
}

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

int main(){

     int array[3];

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

     myFunction(array, 3);

     return 0;

 }

最佳答案

没有区别。两种函数类型(调整后)都是“采用指向 intint 的指针的函数,返回 void”。这只是 C++ 的语法怪癖:非引用类型的函数参数中最外层的 []* 同义。

关于c++ - 函数参数中 int * array 和 int array[] 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16748150/

相关文章:

C++ 标准 : dereferencing NULL pointer to get a reference?

c - 我应该如何在 C 中将对象添加到我的 vector 中?

c++ - 为什么我的输出文件与输入文件不同?

c++ - 没有 ftruncate 和物理文件的 Linux 上的共享内存?

C 数组 64 位递增

javascript - 将两个 json 对象数据合并为一个,JSON 为新的 Single JSON,

c++ - 将 strtok 分隔符设置为两个字符

python - 来自 Python 中另一个实例的实例

c++ - 并行 Fsharp 与并行 C++

c - 如何理解指针数组的类型转换?