1 .局部指针变量没有被初始化。
int main()
{
char *p;
strcpy(p,"hello world");//p指针是局部变量指针,没有被初始化,所以p指针所指的内存区不确定,也就是p的内容不确定
//所以用strcpy给p指针指向的内存区赋值,这个过程也不确定。
p = "hello world"; 将字符串常量 "hello world"的地址赋值给p指针,所以正常。
printf("p=%s\n",p);
return 0;
}
2 .指针所使用的变量在指针之前被销毁。
char* func()
{
char p[] = "hello world!";
return p;
}
int main()
{
char * s = func();
printf("%s\n",s);
return 0;
}
3.
void func (char *p)
{
printf("p=%p\n",p);
free(p)
}
int main()
{
char *s = (char *)malloc(sizeof(char)*6);
strcpy(s, "hello");
func(s);
printf("s = %s\n",s); //错误,s指针已经在func中被释放了。
return 0;
}