回 帖 发 新 帖 刷新版面

主题:[原创]返回指针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设为全局变量也一样没有输出

回复列表 (共2个回复)

沙发

因为最后p指向的是字符串末尾

板凳


对啊,这是一个指针变量,最后p的地址已经变成最后一个了。谢谢,高!

我来回复

您尚未登录,请登录后再回复。点此登录或注册