在函数中返回指针

时间:2015-02-15 13:58:18

标签: c++ c++11

这里我的错误是什么?我很困惑将指针用作函数。

#include<iostream>
using namespace std;
char *strcpy(char *, const char *); // string copy
int main()
{
    char string1[20] = "Priteh Taral";
    char string2[20];
    char *result;
    result = strcpy(string2, string1);
    cout << *result << " ";
}

char *strcpy(char *ptr2, const char *ptr1)
{
    while(*ptr1 != '\0')
    {
        *ptr2++ = *ptr1++;
    }
    *ptr2 = '\0';
    return &ptr2;
}

如何将字符串作为指针返回?

2 个答案:

答案 0 :(得分:1)

实际上,strcpy看起来应该更像这样:

char *strcpy(char *ptr2, const char *ptr1)
{
    char *base = ptr2;
    while ((*ptr2++ = *ptr1++) != '\0')
        ;
    return base;
}

该函数(在标准中)将返回ptr2(目标)的原始值。此外,将'\ 0'与循环中的其他所有内容一起复制更为简单。

答案 1 :(得分:0)

只需返回ptr2

ptr2已经是一个指针。当你告诉它返回&ptr2时,你要求**char,这是一个指向char指针的指针。这不是你想要的。