日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

函数指针,堆栈

發布時間:2024/9/27 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数指针,堆栈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


函數指針的特點

  • 定義指向函數的指針變量的一般形式為數據類型(*指針變量名)(函數參數列表);

    int (*p)(int,int);

  • 注意:對于函數指針來說p+n,p++,p—等運算無意義。

  • 案例如下:

    #include<stdio.h>

    #include<stdlib.h>

    ?

    intadd(inta,intb){

    returna +b;

    }

    ?

    intmul(inta,intb)

    {

    returna*b;

    }

    voidmain()

    {

    printf("%d",add(1, 2));

    printf("\n%p",add);

    ?

    //指針存儲函數地址,存儲了類型

    int(*p)(inta,intb) =add;??

    printf("\n%d\n",p(3, 4));

    ?

    p = mul;????//p是一個變量,所以可以任意等于想要的值。

    printf("\n%d\n",p(3, 4));

    //add = mul;????//這里是錯的代碼,add位常量。

    ?

    system("pause");

    }

  • 查看函數地址:

  • malloc,自動分配內存

    #include<stdio.h>

    #include<stdlib.h>

    #include<Windows.h>

    ?

    _declspec(dllexport)voidmsg()

    {

    while (1)

    {

    ????MessageBoxA(0,"百度CEO李彥宏邀請你共進晚餐","baidu", 0);

    ????????malloc(1024 * 1024 * 100);

    ????Sleep(10000);

    }

    }

    ?

    _declspec(dllexport)voidgo()

    {

    while (1)

    {

    ????malloc(1024 * 1024 * 100);

    ????Sleep(1000);

    }

    }

  • 6、堆上的內存,除非自己回收,否則不會回收。使用free()函數釋放內存。

    #include<stdio.h>

    #include<stdlib.h>

    #include<Windows.h>

    ?

    voidmain()

    {

    ???while (1)

    ???{

    ???????void *p = malloc(1024 * 1024 * 100);

    ???????Sleep(2000);

    ???????free(p);??//通過free釋放內存

    ???????Sleep(6000);

    ???}

    }

  • 修改程序中的堆棧內存的方式。右擊項目à屬性à鏈接器à系統à修改堆棧保留大小。

  • 棧的特點:容量有限。堆中的內存不可以釋放,要手動釋放。

  • malloc卡內存,棧卡cpu

  • ?

    總結

    以上是生活随笔為你收集整理的函数指针,堆栈的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。