發布時間:2011-08-29 共3頁
例子:某前輩寫的,很詳細~~~
int a = 0; 全局初始化區
char *p1; 全局未初始化區
main()
{
int b; //棧
char s[] = "abc"; //棧
char *p2; //棧
char *p3 = "123456"; //123456\0在常量區,p3在棧上。
static int c =0; //全局(靜態)初始化區
p1 = (char *)malloc(10);
p2 = (char *)malloc(20); //分配得來得10和20字節的區域就在堆區。
strcpy(p1, "123456"); //123456\0放在常量區,編譯器可能會將它與p3所指向的"123456"優化成一個地方。
//在strcpy執行的時候,會為生成一個p1的副本 char* _p1,在棧中
}
也就是說&s[0]、&b、&*p2、&*p3是不能用return來放回給調用者的,p1,p2,p3的值,即,靜態區內存和堆區去內存的地址都是可以返回的。
編輯特別推薦: