急!这个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值不变 到底什么呀??
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,