慕虎7371278
首先你程序的语法上就有问题。int sum(int x,int *y){x = 5;*y = 6;} 非void型函数需要返回一个值,在这需要返回一个int型的值。printf("%d%d\n",ab); 还有这句ab需要用逗号隔开,写成a,b;int sum(int x,int *y)这里的*y表示y是一个指向int型变量的指针型变量,此时的y就是一个指针,指向一个内存地址{x = 5;*y = 6;}这里的*y表示的是y这个指针指向的内存地址上存储的值,*y=6,也就是将y所指向的单元上的值赋为6&在这表示一个取地址的符号,因为函数定义中第二个参数是一个指针变量,而b是一个int型变量,所以需要对b取地址,&b表示b的内存单元的地址。最后进行一个分析。int sum(int x,int *y){x = 5;*y = 6;return 0;}这个函数缺少一个返回值,有错误。我暂时稍微修改一下函数内容,加上最后一句return 0;这个函数函数名为sum,int sum表示返回值是一个int型的值,int x,int *y表示两个参数一个是int型,一个是指向int型变量的指针。函数的作用时是将传进来的参数x的值赋为5,y所指向的内存单元上的值赋为6,在返回一个0值。void main(){int a,b,c = 0;a = 4;b = 8;c = sum(a,&b);printf("%d%d\n",a,b);}int a,b,c=0;这句表示声明三个变量a,b,c,并将c的值赋为0;a = 4; b = 8;将a的值赋为4,b赋为8;c=sum(a,&b);表示执行sum函数,由于sum函数返回一个值,所以c的值是sum函数所return的这个值,在这里也就是我自己帮你添加的一个0;而a在sum内表面上是被赋值为5,但是由于传入函数的形参不是指针的时候,他传入的实际是a的一个副本,并不是a本身,所以对a的修改只是修改了a的一个副本,对a 并没有影响由于传入的&b是指针,函数操作修改它所指向的内存单元上的数据为6,这个操作并不是在它的副本上进行的,所以b也就被修改为了6所以最后输出应该是46