中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ios第十天

發布時間:2020-04-04 17:11:54 來源:網絡 閱讀:556 作者:191425207 欄目:移動開發

/ 利用關鍵字 static 修飾的變量 叫做靜態變量 并且存儲在靜態區

// 特點如果你不給初值的話  默認 0

// 特點只初始化一次

// main函數 上面  是全局靜態變量

//  main函數 里面  叫局部靜態變量  作用域是大括號內

void function(){

    int a = 5;

    int b = 6;

    printf("%d,%d",a,b);

}


int main(int argc, const char * argv[]) {

    //  內存劃分為5個區域

    //  棧區 堆區 靜態區 常量區 代碼區

    //  內存地址 由高到低

    //  學習目標 按順序記憶

#pragma mark  -- 代碼區


    // 電腦的存儲 都是以二進制數據進行存儲的

    // 咱們寫得代碼 會被系統轉化成二進制數據 存儲代碼區

    

    

    

#pragma mark  -- 常量區 

    // 常量區 存儲的常量特點

    // h 更改成 w

//    char *str = "zhuang";

    // 常量 是程序運行期間 不能改變量

//    str = "haha"; // 指針的賦值 就是重指向

//    char str[] = "zhuang";

//    str[1]='w';

    // 數組名字  地址 數組首元素的地址

    // 數組首元素的常量地址

    // 是把常量字符串  拷貝到棧區

    

    

    

#pragma mark  -- 靜態區

    

    // 靜態區: 存儲兩種變量

    // 1. 靜態變量

    // 2. 全局變量

    // 3. 靜態區變量 保存周期:直到程序運行結束 靜態變量才會被釋放(伴你到永生)


    

#pragma mark  -- 棧區

    

//    int num1 = 5;

//    int num2 = 10;

//    int num3 = 15;

//    printf("%p\n",&num1);

//    printf("%p\n",&num2);

//    printf("%p\n",&num3);

    

    // 棧區有多大?

    // 大概7M-8M

    

    

//    char str[8187 * 1024] = {0};

    // 出棧 入棧的規則

    // 先入棧的 后出棧  先入棧的  在棧低

    // 入棧  可以叫 壓棧

    // 出棧  的順序  從棧頂開始 出棧

//    int num1 =5;

//    int num2 = 10;

//    int num3 = 15;

//    function();

    // 之所以棧區容量不是特大  又不出現奔潰的現象 是因為 棧區 頻繁進行 出棧 和入棧 只要一次性 不把棧空間堆滿  不會輕易出現崩潰

    // 定義變量的時候  切記 給初值 避免出現莫名其妙的問題

    

    

#pragma  mark  -- 堆區

    // 堆區 是程序員開辟空間 是程序員釋放空間

    // 手動開辟空間 手動釋放空間

    // 堆區空間 大概就是咱們內存全部空間

    

    

    // 開辟空間函數

    // void * 表示無類型指針 可以轉換成任何類型的指針

    // void *malloc(<#size_t#>)

    // size 開辟空間大小 開辟多少字節空間

    // 給整型指針p 指向的位置  開辟了4個字節的 堆內存空間

//    int *p = malloc(4);

//    *p = 10;

//    printf("%d \n",*p);

//    

    

    

//    char *str = malloc(8);

//    strcpy(str, "wang"); // 正確的

//    strcpy(str, "wangwangwang");// 錯誤的, 開辟多少空間  就要用多少空間 不要超過開辟的空間

    

    

//    printf("%s",str);

//    int *p1 = malloc(4);

//    *p1 = 5;

//    short *p2 = malloc(4); //  開辟多少空間  最好你就用多少

//    *p2 = 10;

//    *(p2 + 1) = 15;

//    

    

    

    

    // 釋放空間函數

    // free(<#void *#>)

    // 1 .標記刪除  不會抹去該空間存儲的數據  只會把這塊空間標記為可用

    // 2. 把指針置為空

    // 開辟空間

//    int *p = malloc(4);

//    // 使用空間

//    *p = 10;

//    printf("%d\n",*p);

//    // 釋放空間

//    free(p);

//    p =NULL;


//    int *p = malloc(sizeof(int) * 5);

//    for (int i = 0; i < 5; i++) {

//        *p = i + 1;

//        p++;

//    }

//    //  指針地址發生變化  釋放了本不屬于你開辟的區域 這時候程序崩潰

//    

//    

//    // 修改  把指針移回去

//    for (int i = 0; i < 5; i++) {

//        p--;

//    }

//    free(p);

//    p = NULL;

//    

//**********************************************************************

//    char str[] ={"dj5s5f"};

//    // 計算出有多少個數字

//    int count = 0;

//    for (int i  = 0; i < strlen(str); i++) {

//        if (str[i] >= '0' && str[i] <= '9') {

//            count++;

//        }

//    }

//    char *strValue = malloc(count + 1);

//    int index = 0;

//    for (int i = 0; i < strlen(str); i++) {

//        if (str[i] >= '0' && str[i] <= '9' ) {

//            strValue[index] = str[i];

//            index++;

//        }

//    }

//    strValue[index] = '\0';

//    printf("%s",strValue);

//    free(strValue);

//    strValue = NULL;

//    

//*******************************************************************

 

    

//    char *words[3] = {0};

//    char str[] = {0};

//    for (int i = 0; i < 3; i++) {

//        printf("請輸入一個字符串");

//        scanf("%s",str);

//        printf("%lu",strlen(str));

//        words[i] = malloc(strlen(str) + 1);

//        // 保存字符串

//        strcpy(words[i], str);

//        

//    }

//    

//    

//    

//    for (int i = 0; i < 3; i++) {

//        printf("%s",words[i]);

//        free(words[i]);

//        words[i] = NULL;

//    }

//

// ************************************************************

    

    

    

    

    

    

    

    

    

    

    

    // 其他分配堆內存函數

    // 在堆內存當中 開辟 n * size 個空間  并且把開辟的內存空間清零

    // 因為有一個清零的過程  所有效率偏低

    // calloc(int n , size);

    

    

    

    // 重新分配函數

    // realloc(原來分配的地址, 新空間大小)

    // 情況1: 如果原來分配的地址  可以擴充空間 那么就在原地址擴充

    // 情況2: 如果原來分配的地址  不能擴充了  那么系統會重新分配一個空間  并且把原來地址存儲的數據拷貝到新空間里 然后系統自動釋放原地址的空間

//    

//    int *p_old = malloc(10);

//    int *p_new =realloc(p_old, 15);

//    printf("%p %p\n",p_old,p_new);

//    

//    

    

    

    

   // 內存操作函數

   // 把開辟的空間  多少字節  重置成C

   // memset(開辟的空間的指針, int c, 字節數)

   // 用途: 把開辟好的空間  清零

//    int *p = malloc(sizeof(int) * 4);

//    for (int i = 0; i < 4; i++) {

//        p[i]=i + 5;

//        

//    }

//    // 清零

//    memset(p, 0, sizeof(int) * 4);

//    for (int i = 0; i < 4; i++) {

//        printf("%d",p[i]);

//    }

    

    

    // 內存拷貝函數

    // 從來源  拷貝 目的地  多個字節

    // memcmp(目的地, 來源, 字節數)

    

    

    

    

    

    // 內存比較函數

    // 兩個地址  按字節  進行比較  返回第一個不同的差值

    // memcmp(指針1, 指針2, 字節數)

    


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遂平县| 永善县| 芜湖县| 崇州市| 滦南县| 合作市| 江西省| 芮城县| 汝城县| 鄂托克旗| 申扎县| 嘉荫县| 剑川县| 兰溪市| 腾冲县| 广宗县| 福鼎市| 冷水江市| 琼中| 耿马| 闽侯县| 十堰市| 宜春市| 邛崃市| 惠州市| 监利县| 沙洋县| 齐河县| 金坛市| 卢龙县| 定西市| 绵竹市| 平舆县| 金平| 韶关市| 达拉特旗| 班戈县| 台前县| 阿拉善盟| 惠来县| 边坝县|