我正在编写一个函数,它可以反转一个 cstring,但返回反转的 cstring。返回类型究竟应该是什么?
#include <stdio.h>
#include <string.h>
const char* reverStr(const char *str)
{
char revStr[strlen(str)];
int i;
for(i = strlen(str)-1; i >= 0; i--)
revStr[strlen(str)-1-i] = str[i];
printf("returned value should be %s\n", revStr);
return revStr;
}
int main()
{
char aStr[] = "hello";
char aStr2[] = "goodbye";
printf("%s %s", aStr, aStr2);
char* tmp = reverStr(aStr);//tmp now has garbage
printf("\n%s", tmp);
printf(" %s", aStr);
return 0;
}
给出警告:函数返回局部变量的地址 [默认启用]| 警告:初始化从指针目标类型中丢弃“const”限定符[默认启用]|
我尝试更改char* tmp
为,char tmp[]
但无法编译。什么时候应该使用数组以及什么时候应该使用指针,这让我感到困惑。