重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你没在最后添加结束符'\0',修改如下
创新互联是一家集网站建设,雷山企业网站建设,雷山品牌网站建设,网站定制,雷山网站建设报价,网络营销,网络优化,雷山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
#include stdio.h
#include stdlib.h
int main()
{
char *p1,*p2,*p3;
char *p=(char*)malloc(1000000);
p1=p;
p2=p;
p3=p2;
gets(p1);
while (*p1!='\0')
{
if(*p1!=' ')
{
*p2=*p1;
p2++;
}
p1++;
}
*p2='\0'; //加上这一句,添加字符串结束符
puts(p3);
return 0;
}
————————————————————————-
这种输出又不是没用过,没问题的,可以把代码贴上来,我试试
————————————————————————————
输出时用p3啊,
puts(p3);
或用printf也可以
——————————————————————————
汗,你声明一个char *p3,处理前让p3=p2不就行了
返回地址是可以,但是要知道返回后那个变量还在不。
如:
int globalValue;
int *fun1()
{
return globalValue; //返回全局变量的地址,可以
}
int *fun2()
{
static int staticValue;
return staticValue; //返回表态变量的地址,可以
}
int *fun3( int a )
{
return a; // 返回参数的地直,返回后这个参数已不存在了
}
int *fun4( )
{
int a ;
return a; // 返回局部变量的地直,返回后这个变量已不存在了
}
p是指向局部变量的指针,当函数退出时,局部变量会被释放,这时,p所指向的位置就不一样是原来的数。
因为fun()函数返回的值被计算机的临时变量存放,当赋值给p的时候,p是指向临时变量的地址,所以还可以读取出100。
*p = "hello"这是常量字符串,从静态存储区分配,第一步字符串"hello"从静态存储区获取一块内存,指针变量p才指向这块静态内存,这块内存的特点是从程序开始到结束一直从在,所以可以返回。
扩展资料:
函数的返回值类型是在定义函数时指定的。return 语句中表达式的类型应与定义函数时指定的返回值类型一致。如果不一致,则以函数定义时的返回值类型为准,对 return 语句中表达式的类型自动进行转换,然后再将它返回给主调函数使用。
在调用函数时,如果需要从被调函数返回一个值供主调函数使用,那么返回值类型必须定义成非 void 型。此时被调函数中必须包含 return 语句,而且 return 后面必须要有返回值,否则就是语法错误。
参考资料来源:百度百科-返回值