【发布时间】:2015-11-15 23:15:07
【问题描述】:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int reverse(char *, int);
main()
{
char *word = "Thanks for your help";
reverse(word, strlen(word));
printf("%s", word);
getchar();
}
int reverse(char *line, int len)
{
int i, j;
char *newline = malloc(strlen(line));
for (i = len - 1, j = 0 ; i >= 0; i--, j++)
{
newline[j] = line[i];
}
newline[j] = '\0';
line = &newline;
}
大家好。我有一个似乎无法解决的简单 C 问题。
上面的程序旨在接收一个字符串并将其向后打印出来。反向是完成此操作的函数。
具体来说,问题是当我在 main() 中打印 word 时,字符串看起来没有改变。我试图将 line 的地址作为换行符的地址,但它没有任何效果。
【问题讨论】:
-
参数按值传递;更改
reverse中的line指向的内容并不会在其调用者中执行相同的操作。如果你想生成一个新字符串,你应该只返回一个char*;如果意图是反转字符串,您可以这样做(并且根据定义必须这样做)而不分配额外的空间。 -
line = &newline;是非法的 - 注意编译器消息