內存四區---靜態存儲區(全局區)的理解

這裏寫圖片描述

Tips:
1、指針指向誰,就把誰的地址賦給指針。
2、指針變量和他所指向的內存空間變量是不同的概念。
3、函數中的局部變量在棧區,函數運行完就被析構掉了,對應的內存區域也就沒有了。
4、C++編譯器的優化:會對語法、句法進行分析,對同一個內容會分配同一塊內存區域(即內存編號相同),不同內容則存儲在不同的內存單元中。
地址:0xaa11 0xaa16
內容:“abcdefg2” “abcdefg22”
5、函數中的局部變量被析構了,但是可以通過函數返回值傳給了主函數中的局部變量。

#include "stdlib.h"
#include "stdio.h"
#include "string.h"


char * getStr1()
{
    char *p1="abcdefg2";
    return p1;
}//函數執行完,p1就被析構了,應爲p1存儲在棧區

char *getStr2()
{
    char *p2="abcdefg2";
    return p2;
}

void main()
{
    char *p1 = NULL;
    char *p2 = NULL;
    p1 = getStr1();
    p2 = getStr2();

    //打印p1、p2所指向的內存空間的數據
    printf("p1:%s,p2:%s\n",p1,p2);

    //打印p1、p2的值
    printf("p1:%d,p2:%d\n",p1,p2);

    system("pause");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章