-3

我是 C 的初学者。我正在尝试这个程序来反转字符串。任何帮助有什么问题吗?

#include<stdio.h>
#include<string.h>

char *reverse(char *);

void main()
{
    char str[]="kundan";
    int len=strlen(str);
    char *ptr;
    ptr=reverse(str);
    printf("the reversed string is :%s",ptr);
}

char *reverse(str)
{
    char *rtr=str;
    char qtr[10];

    for(int i=len-1;i<=0;i--)
    {
        qtr=rtr+i;
        qtr++;
    }
    return qtr;
}
4

1 回答 1

2

你不尊重 variable scope。关于这个的一个有用的参考,在这里

例如,在 中reverse(),您指的是lenfor循环中。但是,len在 中定义main,因此不适用于reverse()(这甚至可以编译吗?)

您从中返回的值reverse()是指向仅在该函数范围内的堆栈值的指针。虽然调用函数 ,main()最终会得到一个有效的指针,但指针所指的信息在reverse()返回时已经超出范围,因此是volatile,可能会发生变化。对于这个简单的示例,您可以按值而不是按引用返回反转的字符串。(发回字符数组,而不是指向它们的指针。)

于 2013-01-24T15:40:46.147 回答