请C语言高手帮忙解决下 程序运行后的变量ans的值为什么为 4

作者&投稿:潮熊 (联系方式在网页底部的电邮联系)
c语言中为什么要在程序中定义变量~

在c语言的一个函数中,所有变量都是同时定义的(和c++不同).
你第二个程序:因为在
a,b定义前都是一个随机数如a=10,b=20,到第三句的时候x就成了200,所以不管你以后怎么输入a和b,结果都不受影响,都是200.

{}里面的变量从上往下看,从哪里定义就从哪里开始一直有效到}。
int a=10,b=20,c=30;
{
int a=4;//在上面这个{号和对应的}中,a都是指的这里这个a,而不是上面int a=10的那个
c=a+b;// 这里的C属于main里面的。c=a+b=4+20=24
printf("%d
",a+b+c);//4+20+24=48
{
int c=b;//c=b=20;
fun(&a,b,&c); //进入fun *a=++b=21,b=*c=20; *c=*a=21;
printf("%d
",a+b+c);//a+b+c=21+20+21=62
}
printf("%d
",a+b+c);//这里的变量我们看看,a属于{}中的a=21,b=20;c=24//c是mian中的那个c,最里层的{}不是有一句int c=b 这个c的有效范围到}就OVer了
所以 a+b+c=21+20+24=65

鉴定完毕!
}

当(*(p+k)= =*(q+k))
*(p+k)指向2,*(q+k)指向2时执行Ans=ans+*(p+k)*2;
*(p+k)是指针向下移动,*(p+1)就是啊a【】中的1,*(p+2)就是a【】中的2,依此类推
所以Ans=0+2*2=4

k=0,*(p+k)=1,*(q+k)=3,
k=1,*(p+k)=2==*(q+k)=2,所以Ans=0+2x2 =4,

这个程序不难,自己多看几遍,在草稿本上把一步步的计算结果写出来,最后就行了

相关视频