请说明(输出原因)运行两个代码段会发生什么。请也说明它们的区别。分为以下两种版本setArr(int, int)...
#include <stdio.h>
void setArr(int, int);
int *arr[10]; // array of 10 int pointers
int main(int argc, char *argv[]) {
int i;
setArr(0, 0);
setArr(1, 100);
setArr(2, 200);
setArr(3, 300);
setArr(4, 400);
for (i = 0; i < 5; i++)
printf("arr[%d]: %d\n", i, *arr[i]); /* should be 0,100, 200,300,400 */
return 0;
}
Run Code Online (Sandbox Code Playgroud)
的版本 setArr
版本A
void setArr(int index, int v) {
int i = v;
*arr[index] = i;
}
Run Code Online (Sandbox Code Playgroud)
输出: Segmentation fault (core dumped)
版本B
void …Run Code Online (Sandbox Code Playgroud)