指针变量做函数参数
本帖最后由 tyf1218405122 于 2022-3-20 20:08 编辑#include <stdio.h>
void fun(int *s)
{
static int j=0;
do
{
int j =0;
s+=s;
}while(++j<2);
}
int main(void)
{
int k,a={1,2,3,4,5};
for(k=1;k<3;k++)
{
fun(a);
}
for(k=0;k<5;k++)
{
printf("%d",a);
}
}
打印出的结果是什么?
怎么来的? 结果是72345 本帖最后由 jhq999 于 2022-3-20 20:27 编辑
{:5_93:} 中招了
72345
静态变量j,第二次进入函数,j=2不是0所以加一次
1+2+2+2 怎么来的这个解释比较困难。。 jhq999 发表于 2022-3-20 20:18
中招了
72345
静态变量j,第二次进入函数,j=2不是0所以加一次
明白啦 谢谢谢 gandixiwang 发表于 2022-3-20 20:30
怎么来的这个解释比较困难。。
刚才明白啦感谢 jhq999 发表于 2022-3-20 20:18
中招了
72345
静态变量j,第二次进入函数,j=2不是0所以加一次
那第二次进入函数的时候不是a【2】=7吗?
最后进行打印的时候不是 3 5 7 4 5吗 jhq999 发表于 2022-3-20 20:18
中招了
72345
静态变量j,第二次进入函数,j=2不是0所以加一次
为什么最后只改变了a的值啊 本帖最后由 jhq999 于 2022-3-20 21:14 编辑
tyf1218405122 发表于 2022-3-20 21:01
为什么最后只改变了a的值啊
do
{
int j =0;////这个j,它的作用域只在循环体里,外面的j不作用在这里面,它也影响不到外面的j,而且j始终被赋值为0
s+=s;//
}while(++j<2); jhq999 发表于 2022-3-20 21:11
如果去掉里面的 int j=0;
那结果就应该是 35 7 4 5了 tyf1218405122 发表于 2022-3-20 21:17
如果去掉里面的 int j=0;
那结果就应该是 35 7 4 5了
对
页:
[1]