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