函数中的 C 数组指针

kaa*_*353 0 c arrays pointers function-call implicit-conversion

我写了这个函数:

int einmaleins(int zahl, int *arr){
int e;
for(int i = 1; i<11; i++){
    e = zahl*i;
    arr[i-1]=e;
}

return 0;
}

int main(){
int arr[10] = {0};
einmaleins(2, &arr[10]);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是指针数组,但是当我启动程序时,我收到以下消息:*** 检测到堆栈粉碎 ***:终止

我真的不知道该怎么办。

Vla*_*cow 5

在这次通话中

einmaleins(2, &arr[10]);
Run Code Online (Sandbox Code Playgroud)

您正在将内存地址传递到数组的最后一个元素之后。

调用函数如下

einmaleins(2, arr);
Run Code Online (Sandbox Code Playgroud)

在调用中用作参数表达式的数组指示符会隐式转换为指向其第一个元素的指针,

事实上调用相当于

einmaleins(2, &arr[0]);
Run Code Online (Sandbox Code Playgroud)