主题:[原创]返回指针p为什么不可以?
#include <iostream>
using namespace std;
char c[20]={0};
int main()
{
char *catenate(char *p1,char *p2);
void copy(char *p1,char *p2);
int sum(char *p);
char a[]={"America"};
char b[]={"european"};
cout <<sum(a)<<endl;
cout <<sum(b)<<endl;
cout<<catenate(a,b)<<endl;
copy(a,b);
cout<<a<<b<<endl;
return 0;
}
char *catenate(char *p1,char *p2)
{
char *p=c;
for(;*p1!='\0';p1++,p++)
*p=*p1;
for(;*p2!='\0';p2++,p++)
*p=*p2;
*p='\0';
return c;
}
void copy(char *p1,char *p2)
{
for(;(*p1)!='\0';p1++,p2++)
*p2=*p1;
*p2='\0';
}
int sum(char *p)
{
int n=0;
for(;(*p)!='\0';p++)
n++;
return n;
}
上面程序运行是正确的,但是
在catenate函数中如返回指针值p则连接好后的字符串没有输出,为什么?即使把指针p设为全局变量也一样没有输出
using namespace std;
char c[20]={0};
int main()
{
char *catenate(char *p1,char *p2);
void copy(char *p1,char *p2);
int sum(char *p);
char a[]={"America"};
char b[]={"european"};
cout <<sum(a)<<endl;
cout <<sum(b)<<endl;
cout<<catenate(a,b)<<endl;
copy(a,b);
cout<<a<<b<<endl;
return 0;
}
char *catenate(char *p1,char *p2)
{
char *p=c;
for(;*p1!='\0';p1++,p++)
*p=*p1;
for(;*p2!='\0';p2++,p++)
*p=*p2;
*p='\0';
return c;
}
void copy(char *p1,char *p2)
{
for(;(*p1)!='\0';p1++,p2++)
*p2=*p1;
*p2='\0';
}
int sum(char *p)
{
int n=0;
for(;(*p)!='\0';p++)
n++;
return n;
}
上面程序运行是正确的,但是
在catenate函数中如返回指针值p则连接好后的字符串没有输出,为什么?即使把指针p设为全局变量也一样没有输出