【发布时间】:2015-01-23 11:15:23
【问题描述】:
此 porgram 打印字符串的不同排列。如果我在 main 中将字符串声明为 char 数组并在 printAnagram 函数中传递数组名称,则它可以正常工作。但是如果我将字符串声明为 char* s = "hello" 并传递 's' 然后它会崩溃。为什么?
#include <stdio.h>
#include <conio.h>
void printAnagram(char *str, int b, int e);
int main()
{
char *s = "ABC"; // works fine when char s[] = "ABC" is used.
printAnagram(s, 0, 2);
return 0;
}
void swap(char *a, char* b)
{
char temp = *a;
*a = *b;
*b = temp;
}
void printAnagram(char *str, int b, int e)
{
int i = 0;
if(b==e)
printf("%s\n", str);
else
{
for(i=b;i<=e;i++)
{
swap((str+b),(str+i));
printAnagram(str, b+1, e);
swap((str+b), (str+i));
}
}
}
【问题讨论】:
-
因为字符串文字是一个常量。没有教程/参考/语言书告诉你吗?这已经被问了数百次了。
标签: c