#include<stdio.h>int a[3][3]={1,2,3,4,5,6,7,8,9},*p;void main(){ p=(int*)malloc(sizeof(int)); f(p,a); printf("%d\n",*p); system ("pause"); }f(int *s,int p[][3]) { *s=p[1][1]; system ("pause"); }答案是5 求详细解释,追分
首先是 a的初始化a的值为a[0][0]~a[0][2] 1 2 3a[1][0]~a[1][2] 4 5 6a[2][0]~a[2][2] 7 8 9void main(){ p=(int*)malloc(sizeof(int)); // 分配一块内存,其地址赋值给p(全局变量) f(p,a);//调用函数 printf("%d\n",*p);// 这里p是全局变量,指向分配的那块内存,所以*p的值是5 system ("pause"); }f(int *s,int p[][3]) { *s=p[1][1]; // 这里面的p是函数参数,和全局变量p不一样, 他是局部变量,他的值就是全局变量a值(a[0][0])的地址。 所以这里的p[1][1]就是a[1][1].其值为 5. // s的值就是全局变量p的值,指向分配的那块内存,所以分配的那块内存里面存的值是5. system ("pause"); }