亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

malloc、free、realloc、calloc函數

發布時間:2020-08-08 08:59:03 來源:網絡 閱讀:399 作者:村雨1943 欄目:編程語言

malloc函數


  • 原型:extern void* malloc(unsigned int size);
  • 功能:動態分配內存;
  • 注意:size僅僅為申請內存字節大小,與申請內存塊中存儲的數據類型無關,故編程時需要通過以下方式給出:"長度 * sizeof(數據類型)";

  • 示例
//動態分配內存,輸入5個數據,并把低于60的值打印出來

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int *ptr = (int *)malloc(5 * sizeof(int));//分配內存

    for (int i = 0; i < 5; i++)
        {
            scanf_s("%d", &ptr[i]);//輸入數據
        }

    int min = 60;

    for (int i = 0; i < 5; i++)
    {
        if (min > *(ptr + i))
            printf("%5d", *(ptr + i));//打印出低于60的值
    }
    free(ptr);
    system("pause");
    return 0;
}

free函數

  • 原型:void free(void * ptr);
  • 功能:搭配malloc()函數,釋放malloc函數申請的動態內存;
  • 注意:對于free(ptr),若ptr為NULL,則可進行多次釋放,若ptr是非空指針,則free對ptr只能進行一次操作,否則程序將崩潰;
  • 示例:見malloc函數;
  • 結果:見malloc函數;

realloc函數

  • 原型: void realloc(void ptr,unsigned int size);
  • 功能:先判斷當前指針是否有足夠的連續空間,若足夠,擴大ptr指向的地址并返回,若不夠,怎按size指定的大小分配空間,將原數據copy到新分配的內存中,然后釋放原ptr所指向區域;
  • 注意:內存使用完畢后,應使用free()函數釋放,但原來的指針是自動釋放,不需要使用free;

  • 示例:
#include <stdio.h>
#include <stdlib.h>

int main()
{
   char *str;

    /* 一開始的內存分配 */
    str = (char *)malloc(15);
    strcpy(str, "Hello World!");
    printf("String = %s\n", str);

    /* 重新分配內存 */
    str = (char *)realloc(str, 25);
    strcat(str, ", C");
    printf("String = %s\n", str);

    free(str);
    system("pause");
    return 0;
}

calloc函數

  • 原型:void* calloc(unsigned int num,unsigned int size);
  • 功能:為已經分配的內存重新分配空間并復制內容;
  • 注意:num:對象個數,size:對象占據的內存字節數,相較于malloc函數,calloc函數會自動將內存初始化為0;

  • 示例:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    int i;
    int *ptr;

    printf("元素個數為:");
    scanf("%d", &num);

    ptr = (int*)calloc(num, sizeof(int));
    printf("輸入 %d 個數字:\n", num);
    for (i = 0; i < num; i++)
    {
        scanf("%d", &ptr[i]);
    }

    printf("輸入的數字為:");
    for (i = 0; i < num; i++) {
        printf("%d ", ptr[i]);
    }
    printf("\n");
    system("pause");
    return 0;
}

向AI問一下細節

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

AI

报价| 宜章县| 招远市| 徐州市| 来宾市| 余庆县| 永善县| 崇信县| 淮阳县| 梅河口市| 丹巴县| 大理市| 衡阳县| 塘沽区| 吴旗县| 吉林市| 惠东县| 曲麻莱县| 夏邑县| 福贡县| 大同县| 新龙县| 延川县| 洛南县| 呼伦贝尔市| 西畴县| 昌吉市| 宁化县| 广德县| 龙游县| 无锡市| 翼城县| 东丽区| 红原县| 大同市| 民丰县| 芷江| 壤塘县| 石首市| 彰武县| 望谟县|