有一道C语言的题 请教一下哈 怎么推出答案的???谢谢哈

2025-01-01 20:39:19
推荐回答(5个)
回答1:

输出肯定是输出字符'a'!
原因:*p=b,将数组b的首地址(也是首个字符'a'的地址赋给p),然后进入函数
point (char *p) {p+=3;},此时子函数种的p仅是point(p)的形参(意为:此处p可换其他变量,如a,bc等都可以,因为他只是形参),即是p的值就是'a'的地址,此处p加3,则将p指向字符'd',此时在子函数操作完,还未返回主函数时是这样的,所以如果在子函数种输出结果就肯定是字符'd'。但是由于没有将p+3后的结果返回,所以形参的值改变并不能导致主函数实参p的改变,所以主函数p还是指向字符'a',所以输出就是'a',而非'd'!!

若楼主想要返回的是'd'的地址,则需要将将改变后的形参返回给实参可做如下修改:
#include
char* point(char *a)
{
a+=3;
return a;
} //此处子函数中的形参变量不影响值的传回,用p和a或其他变量都一样
void main()
{
char b[]={'a','b','c','d','e'},*p=b;
p=point(p);
printf("%c\n",*p);
}

此时输出即为字符'd'!!!

回答2:

char b[4]={'a','b','c','d'},*p=b; //定义字符指针p,并赋初值为字符数组的首地址
point (p); // 调用函数实现p+=3,即地址加3,这时字符指针指向指向b数组的第四个元素
printf("%c\n",*p); //在屏幕上打印b数组的第四个元素,即“d”。

回答3:

输出结果为: a
point (char *p)
{p+=3;} //这个函数,只是改变了当前p值的大小,并没有改变p地址中的内容,而p是个局部变量,对主程序中的p没有影响,因此,主程序的p依然指向'a' .

回答4:

因为P=P+3
则输出*P为d
嗯输出d

回答5:

p=24