char *s 和 char s[]的疑惑
#include <stdio.h>
char *Func()
{
char s[] = "hello world!"; ////
return s;
}
void main()
{
char *s = Func();
printf("%s",s);
getchar();
}
如上,用VC编译会发出如下警告
returning address of local variable or temporary
但如果换成char *s="hello world";
却正常,
char *s 和 char s[]两者之间有何不同,
char s[]是在栈区分配空间,函数体结束后会自动销毁,那char *s 了.
问题点数:20、回复次数:2Top
1 楼megaboy(飞天御剑流之杀神一刀斩)回复于 2005-10-25 14:40:21 得分 20
char s[]是在栈区分配空间,函数体结束后会自动销毁,那char *s 了
-------------------------------------------------------------
对于char *s ="hello world"; s指向的是字符串常量,字符串常量不是存放在栈中的,而是存放在静态存储区的,程序结束的时候它才会销毁,程序运行期间它一直存在。Top
2 楼lzp229(只想飞)(卡卡)回复于 2005-10-25 14:47:19 得分 0
这样的问题真是多。平均几天就会有一道题。Top




