关于字符参数的有关问题

关于字符参数的问题
有一个方法:fn(char*   str)

在调用时,如果是fn( "abc ")调用时,结果就正确。
如果是:
char*   p= "abc ";
fn(p)
这种情况时,结果就错误了,不知什么原因?????

------解决方案--------------------

#include <stdlib.h>
#include <stdio.h>

//----------------------------------------

void fn(char* str);
//----------------------------------------

int main(int argc, char* argv[])
{
fn( "abc ");
char* p= "abc ";
fn(p);
return 0;
}

void fn(char* str)
{
printf( "%s\n ",str);
}

//----------------------------------------

我测试未出现任何错误
------解决方案--------------------
这样的语句应该不会出错 我验证了下
void fn(char *p)
{
ShowMessage(p);
}
int main(int argc, char* argv[])
{
char *pa = "kinga ";
fn(pa);
return 0;
}
可以通过
------解决方案--------------------
那要看你函数里面做了哪些操作了。