求下面c程序的结果

来源:百度知道 编辑:UC知道 时间:2024/05/20 05:39:58
int TestFunc(int& var1,char* var2)
{
var2[var1++]=++var1;
return strlen(var2);
}
main()
{
int a=1;
char b[4]={0};
int c=TestFunc(a,b);
printf("a=%d,b={%d,%d,%d,%d},c=%d",a,b[0],b[1],b[2],b[3],c);
}
求a=?,b={?,?,?,?},c=?
请写出求解过程
我在vc6.0上运行的结果为a=3,b={0,0,2,0},c=0

首先先说说程序缺少了#include <stdio.h>和#include <string.h>,而且TestFunc中的参数列表里的int& var1在C语言中是不合法的,在C++中才合法,叫做引用传递,main函数前面缺少函数返回值类型可以改为void main();在main函数中int a=1,b[1]=0,因为b[2],b[2],b[3]的值缺省,默认为0,调用函数TestFunc(a,b)后,++a=2,这时a=2,var2[2++]=++1,即var[2]=2,var1++ 所以a=3,b[2]=2, strlen(b)是计算字符串b长度,所以c=0.

var2[var1++]=++var1;

欠抽的代码。答案取决于编译器。

gcc的结果是 a=2,b={0,2,0,0},c=0

a=1,b={0,0,0,3},c=0