第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Linux C語(yǔ)言指針與內(nèi)存

難度初級(jí)
時(shí)長(zhǎng) 2小時(shí) 5分
學(xué)習(xí)人數(shù)
綜合評(píng)分9.60
263人評(píng)價(jià) 查看評(píng)價(jià)
9.9 內(nèi)容實(shí)用
9.5 簡(jiǎn)潔易懂
9.4 邏輯清晰
  • int (*pquadrate)(int a)=&quadrate;

    int s=quadrate(a);

    c語(yǔ)言不允許直接操作代碼段

    代碼在代碼段

    數(shù)據(jù)在數(shù)據(jù)段

    程序編譯運(yùn)行的狀態(tài)在棧

    變量:在數(shù)據(jù)段內(nèi)存中某個(gè)地址處存放某個(gè)類(lèi)型的數(shù)值

    指針:在數(shù)據(jù)段內(nèi)存中某個(gè)地址處存放某個(gè)地址&a,該地址處存放某個(gè)變量

    查看全部
  • 32位4G

    2的32次方=1K*1K*1K*4

    4G個(gè)字節(jié)

    64位

    https://img1.sycdn.imooc.com//5cff1e9e0001fd7304990403.jpg


    查看全部
    0 采集 收起 來(lái)源:內(nèi)存管理

    2019-06-11

  • a地址

    *a? a指向的地址處的值

    查看全部
    0 采集 收起 來(lái)源:使用gdb調(diào)試案例

    2019-06-11

  • gdb 斷點(diǎn)調(diào)試,單點(diǎn)調(diào)試

    gcc -g main.out -o? ?-g使用gdb編譯

    gbd ./main.out? 執(zhí)行

    (gdb) l? 或list? 顯示源代碼

    回車(chē)?yán)^續(xù)執(zhí)行剛剛的命令

    start開(kāi)始執(zhí)行

    print或p a 打印輸出a

    n 跳到下一行

    s 進(jìn)入函數(shù)

    bt 查看函數(shù)堆棧

    f 1 跳轉(zhuǎn)到函數(shù)1

    q 退出調(diào)試

    查看全部
    2 采集 收起 來(lái)源:gdb工具的使用

    2019-06-11

  • 函數(shù)把實(shí)參的值賦給形參,形參是個(gè)新變量,改變形參,改變不了實(shí)參

    int *a=&b;? a是指針,把b的地址賦給a,a指向b

    int *a? int* a? ?int * a

    &取地址符

    指針變量不賦初值會(huì)出錯(cuò),temp

    查看全部
  • 棧越往后調(diào)用的函數(shù),所占的內(nèi)存越小,從上往下調(diào)用,而數(shù)據(jù)段和代碼段則是從下往上占用內(nèi)存。全局變量,常量,靜態(tài)變量都是存在內(nèi)存的數(shù)據(jù)段中。

    5b03cb5400015d3712800720.jpg

    查看全部
    1. 計(jì)算機(jī)是由邏輯電路元件來(lái)組成的

    2. 計(jì)算用二進(jìn)制

    3. 顯示為十進(jìn)制

    4. 編程用十六進(jìn)制

    查看全部
  • 內(nèi)存分配
    查看全部
    0 采集 收起 來(lái)源:內(nèi)存管理

    2019-03-31

  • 系統(tǒng)內(nèi)存分配
    查看全部
    0 采集 收起 來(lái)源:內(nèi)存管理

    2019-03-26

  • 寫(xiě)寫(xiě)心得體會(huì)。

    char?*str2?=?"world";

    定義一個(gè)字符指針變量str2,

    在gdb中用「p str2」查詢到str2所指向的值,在內(nèi)存中的位置是在低地址位的代碼段,

    而不是在高地址位的棧里面,結(jié)果是這樣的:「$1 = 0x400774 "world"」。

    str2本身是指針,它本身的所在是在棧里面的,用「p &str2」來(lái)查詢,得到「$2 = (char **) 0x7fffffffda98」。

    所以,如果用輸入語(yǔ)句來(lái)試圖對(duì)str2指向的地址賦值的話,是會(huì)出現(xiàn)「內(nèi)存段錯(cuò)誤的」!

    比如:「scanf("%s",str2);」,這樣的語(yǔ)句運(yùn)行時(shí)是會(huì)出現(xiàn)內(nèi)存段錯(cuò)誤的。

    原因就在于C語(yǔ)言不運(yùn)行程序在運(yùn)行中對(duì)內(nèi)存中的代碼段進(jìn)行修改。

    再對(duì)輸入語(yǔ)句進(jìn)行深入剖析,比如有「int a; scanf("%d",a);」這樣的語(yǔ)句,當(dāng)輸入整型數(shù)值時(shí),數(shù)值被傳入內(nèi)存,保存到了變量a所在的地址,實(shí)際上就是變量a本身所代表的含義就是它自身所在的內(nèi)存地址,所以數(shù)值傳入給a,實(shí)際上是傳入給a指向的地址,而a作為一個(gè)整型變量,它指向的地址就是它本身所在的地址,它是在內(nèi)存中的棧里的,所以輸入值、傳入值,沒(méi)有問(wèn)題,不會(huì)出現(xiàn)內(nèi)存段錯(cuò)誤。

    但是,如果是像上面的把輸入的字符串傳入給字符指針str2的話,實(shí)際要執(zhí)行的傳入過(guò)程是把字符串傳入到str2指向的地址,而這個(gè)地址是在內(nèi)存的代碼段里,這是不允許的,所以就會(huì)出現(xiàn)內(nèi)存段錯(cuò)誤!

    ++++++++++++++

    所以,對(duì)于指針變量,它在定義或初始化的時(shí)候,它的默認(rèn)指向地址是在內(nèi)存的「代碼段」里的,也就是說(shuō),在這種情況下,對(duì)指針變量取值的話,得到的值實(shí)際上是從內(nèi)存的「代碼段」里取出來(lái)的,根據(jù)C語(yǔ)言的規(guī)定,當(dāng)然就無(wú)法對(duì)這個(gè)值進(jìn)行重新賦值了!

    所以,要改變指針變量所指向的內(nèi)存的值,不能直接去對(duì)指針變量指向的值進(jìn)行賦值,而是要改變指針的指向,也就是說(shuō),「要把地址賦值給指針變量」,而不是把值賦值給指針變量最初所指向的值。

    ++++++++++++++

    再貼一段助于理解指針的試驗(yàn)代碼:

    #include?<stdio.h>
    
    int?main()
    {
    ????????char?a[10]="hello";
    ????????char?b[10]="world";
    ????????char?*c="81";
    
    ????????printf("char?*c=81,?c?is?%s\n",c);
    ????????
    ????????c=&a;
    ????????printf("c?=?&a,c?is?%s\n",c);
    
    ????????printf("address?of?a?is?%d\n",a);
    ????????printf("address?of?value?pointed?by?c?is?%d\n",&(*c));
    ????????printf("address?of?c?itself?is?%d\n",&c);
    ????????
    ????????return?0;
    }

    輸出結(jié)果如下:

    char?*c=81,?c?is?81
    c?=?&a,c?is?hello
    address?of?a?is?-358473008
    address?of?value?pointed?by?c?is?-358473008
    address?of?c?itself?is?-358473016

    指針c本身也是在棧里面的,對(duì)c取地址的話取到的是c本身的地址,而要想取到c所指向的值的地址的話,要先對(duì)c取值,再對(duì)值取地址:&(*c)。

    查看全部
  • 數(shù)組與指針的不同在于數(shù)組是地址常量,而指針是地址變量

    查看全部
    1 采集 收起 來(lái)源:指針運(yùn)算

    2019-02-11

  • gdb命令:x(打印內(nèi)存值)/3(輸出3個(gè)值)d(十進(jìn)制顯示) 0xffffff(開(kāi)始地址)

    查看全部
  • 1. ?int quadraate(int a);是一個(gè)函數(shù) ? ?int (*pquadrate)(int a)=&quadrate;將指針pquadtate指向函數(shù)quadrate! ? ?int s=(*pquadrate)(a)可以調(diào)用quadtate函數(shù),這種操作常用于回調(diào)函數(shù)

    查看全部
  • 計(jì)算機(jī)內(nèi)部

    https://img1.sycdn.imooc.com//5c5f8e6e0001b0bd05620445.jpg

    查看全部
    0 采集 收起 來(lái)源:內(nèi)存管理

    2019-02-10

  • 使用調(diào)試功能 gcc -g

    gdb ./? ? ? ? ? ? ? ?//開(kāi)始進(jìn)行g(shù)db調(diào)試

    list? ? ? ? ? ? ? ? ? ?//列出程序

    start? ? ? ? ? ? ? //單步開(kāi)始

    p? ? ? ? ? ? ? ? ? //打印變量值

    n? ? ? ? ? ? ? ? ?//繼續(xù)執(zhí)行

    s? ? ? ? ? ? ? ? //step 跳入函數(shù)

    bt? ? ? ? ? ? ? //查看函數(shù)堆

    f? ? ? ? ? ? ? ?//切換函數(shù)堆

    查看全部
    2 采集 收起 來(lái)源:gdb工具的使用

    2019-02-10

舉報(bào)

0/150
提交
取消
課程須知
本課程是C語(yǔ)言中級(jí)課程,為了更好的學(xué)習(xí)效果: 1、需要有一定的C語(yǔ)言基礎(chǔ),如果沒(méi)有基礎(chǔ)的同學(xué)可以看《C語(yǔ)言入門(mén)》這門(mén)課。 2、本課程是在Linux環(huán)境下講解,需要熟悉一些Linux命令。如果不了解的話可以在《Linux C語(yǔ)言編程基本原理與實(shí)踐》這門(mén)課程中補(bǔ)充
老師告訴你能學(xué)到什么?
1、C語(yǔ)言中的指針是怎么回事 2、Linux下gdb調(diào)試工具是怎樣使用的 3、指針與內(nèi)存有著怎樣的關(guān)系 4、數(shù)組與字符串之間的聯(lián)系

微信掃碼,參與3人拼團(tuán)

微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

友情提示:

您好,此課程屬于遷移課程,您已購(gòu)買(mǎi)該課程,無(wú)需重復(fù)購(gòu)買(mǎi),感謝您對(duì)慕課網(wǎng)的支持!