急!这个C程序的执行结果是什么??

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:16:54
point(char*pt);
main()
{
char b[4]={'a','c','s','h'},*pt=b;
point(pt);
printf("%c\n".*pt);
}
point(char *p)
{
p+=3;
}

是a还是h啊 调用point(pt)后排头的值改变吗 为什么呀??
谢啦!!
可是书上的答案是a啊 说调用函数后pt值不变 到底什么呀??

答案是A
pt=b pt指向数组首址
point(pt)
point(char *p) //pt的值复制给p p也指向数组首地址 p+=3只能改变p值的指向
printf("%c\n", *pt);//pt指向数组首值并没有改变,输出当然是a

你输出下面的程序试一下
point(char*pt);
main()
{
char b[4]={'a','c','s','h'},*pt=b;
point(pt);
printf("%c\n".*pt);
}
point(char *p)
{
p+=3;
printf("%c\n".*p); //p已指向h 输出h
}

//-------------------------------
point(char*pt);
main()
{
char b[4]={'a','c','s','h'},*pt=b;
point(&pt); //传址
printf("%c\n",*pt); //打印h
}
point(char *p)
{
*p+=3;

}

说来说去,还是涵数参数传址传值没有搞清楚啊!帅哥!

答案是a

自己编译一次就知道是a啦、

而且p+=3 是p指针储存的地址+3
pt指针还是只指向了b 首地址 所以还是a
=======================\

point函数只是把形参 p的值该改变而已啊。
最后输出的是pt啊。理解这个就可以了 pt都没变,当然是a了

是a,