2017年6月里番一览表:求救会C语言的人 我一点都不会

来源:百度文库 编辑:高校问答 时间:2024/04/28 03:40:25
Char*testfuncion()
{
Char*RP,P[3];
RP=P;
P[0]=‘A’;
*P++=‘B’;
*++P=0;
Return RP;
};
问题是1,该函数能编译通吗? 2,该函数存在几处错误?请说明理由。

......

1.编译不能通过。
2.函数存在以下错误:
一、常量不能修改:P++及++P均是非法的,因为P是一个常量;(这是编译不能通过的原因)
二、返回局部变量:RP = P, return RP; 在testfunction运行完毕之后,P[3]占据的内存空间将被释放,所以该函数返回的指针指向的是一个无效的地址,在后面的程序中使用该指针是十分危险的。

需要说明的是,第二个错误不会造成编译错误,但运行时会出错。此外不把"Char"及"Return"视为错误,另外后大括号后面的分号亦不会被视为错误,系统会认为是全局的一个空语句(视编译器而定)

编译不能通过
在函数testfunction()中用指针的形式
*P++或*++P赋值会报错:
Lvalue required in function testfunction

而用P[]的形式赋值,能通过,但打印出的结果特别奇怪,是:@(唉,这里还显示不出来)

#include <stdio.h>
char* testfunction(){
char P[3];
char *RP=P;
P[0]='A';
P[1]='B';
//*(P++)='B';
P[2]=0;
/*++++++++++++++++++*/
*(P+4)='\0';
/*++++++++++++++++++*/
return RP;
}

void main(){
printf("%s",testfunction());
}

编译不一定能通哦
最后的分号不要了吧
数组的定义也最好是放在外面并且定义成全局的
RP和*RP有混淆的嫌疑
我也好久没看c了 只能帮你这些

Char*testfuncion()//这里是定义了一个返回char指针的函数
{
Char*RP,P[3];//这里定义了Char型的指针 RP和Char型数组P[3]
RP=P;//将P[3]数组的首地址给指针RP
P[0]=‘A’;//将数组的第一个元素赋值为字符‘A’
*P++=‘B’; //将数组的第一个元素赋值为字符‘B’然后指向下一个元素
*++P=0;//将数组的第三个元素赋值为0
Return RP;//返回指针RP
};//这里用;号是什么意思?定义函数不用加;
你说吧,按照以上的说明它能运行么?
1.没有主函数,一般是MAIN()
2.定义的指针没有用
3.该函数没有任何意义
4.它根本就是一段毫无意义的代码
5.所以说它不能运行