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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

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

難度初級
時長 2小時 5分
學(xué)習(xí)人數(shù)
綜合評分9.60
263人評價 查看評價
9.9 內(nèi)容實(shí)用
9.5 簡潔易懂
9.4 邏輯清晰
  • 指針數(shù)組和數(shù)組指針的區(qū)別:

    數(shù)組指針(也稱行指針)
    定義 int (*p)[n];
    ()優(yōu)先級高,首先說明p是一個指針,指向一個整型的一維數(shù)組,這個一維數(shù)組的長度是n,也可以說是p的步長。也就是說執(zhí)行p+1時,p要跨過n個整型數(shù)據(jù)的長度。

    在32 位系統(tǒng)下任何類型的指針永遠(yuǎn)是占4 個字節(jié)。即數(shù)組指針永遠(yuǎn)占4個字節(jié)。

    如要將二維數(shù)組賦給一指針,應(yīng)這樣賦值:
    int a[3][4];
    int (*p)[4]; //該語句是定義一個數(shù)組指針,指向含4個元素的一維數(shù)組。
    ?p=a;??????? //將該二維數(shù)組的首地址賦給p,也就是a[0]或&a[0][0]
    ?p++;?????? //該語句執(zhí)行過后,也就是p=p+1;p跨過行a[0][]指向了行a[1][]

    所以數(shù)組指針也稱指向一維數(shù)組的指針,亦稱行指針。

    指針數(shù)組
    定義 int *p[n];
    []優(yōu)先級高,先與p結(jié)合成為一個數(shù)組,再由int*說明這是一個整型指針數(shù)組,它有n個指針類型的數(shù)組元素。這里執(zhí)行p+1時,則p指向下一個數(shù)組元素,這樣賦值是錯誤的:p=a;因?yàn)閜是個不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它們分別是指針變量可以用來存放變量地址。但可以這樣 *p=a; 這里*p表示指針數(shù)組第一個元素的值,a的首地址的值。

    數(shù)組占多少個字節(jié)由數(shù)組本身的大小決定,每一個元素都是一個指針。

    如要將二維數(shù)組賦給一指針數(shù)組:
    int *p[3];
    int a[3][4];
    p++;?//該語句表示p數(shù)組指向下一個數(shù)組元素。注:此數(shù)組每一個元素都是一個指針
    for(i=0;i<3;i++)
    p[i]=a[i]
    這里int *p[3] 表示一個一維數(shù)組內(nèi)存放著三個指針變量,分別是p[0]、p[1]、p[2]
    所以要分別賦值。

    這樣兩者的區(qū)別就豁然開朗了,數(shù)組指針只是一個指針變量,似乎是C語言里專門用來指向二維數(shù)組的,它占有內(nèi)存中一個指針的存儲空間。指針數(shù)組是多個指針變量,以數(shù)組形式存在內(nèi)存當(dāng)中,占有多個指針的存儲空間。
    還需要說明的一點(diǎn)就是,同時用來指向二維數(shù)組時,其引用和用數(shù)組名引用都是一樣的。
    比如要表示數(shù)組中i行j列一個元素:
    *(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j]

    優(yōu)先級:()>[]>*


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

    2019-07-03

  • *p是指指針p的內(nèi)容,p是指指針p所指的地址,*p=&a;是指p此時的內(nèi)容換成a的值。p++;p+=3;都是指針的偏移,p+=3;不是地址+3,而是地址往下數(shù)3個格,即根據(jù)這個指針的數(shù)據(jù)類型確定每個格的字節(jié)數(shù)。如果p是int,那么每個格就是4個字節(jié)。

    同時,還可以用p[0]、p[1]、p[2]、p[3]、p[4]、p[5]等代替,省去了指針的偏移。

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

    2019-07-03

  • 棧:先進(jìn)后出,后進(jìn)先出。由高地址向低地址放入,先放入的后出,后放入的先出。

    先放入的分配的內(nèi)存大于后放入的。

    字節(jié)順序是指占內(nèi)存多于一個字節(jié)類型的數(shù)據(jù)在內(nèi)存中的存放順序,通常有小端、大端兩種字節(jié)順序。小端字節(jié)序指低字節(jié)數(shù)據(jù)存放在內(nèi)存低地址處(由右向左),高字節(jié)數(shù)據(jù)存放在內(nèi)存高地址處;大端字節(jié)序是高字節(jié)數(shù)據(jù)存放在低地址處,低字節(jié)數(shù)據(jù)存放在高地址處(由左向右)。

    示例中的Linux棧內(nèi)用的就是小端存儲(as高字節(jié)存放高地址,由上到下)。

    查看全部
  • 堆棧段:https://img1.sycdn.imooc.com//5d17520a0001979802990765.jpg

      1. 為函數(shù)內(nèi)部的局部變量提供存儲空間。

      2. 進(jìn)行函數(shù)調(diào)用時,存儲“過程活動記錄”。

      3. 用作暫時存儲區(qū)。如計(jì)算一個很長的算術(shù)表達(dá)式時,可以將部分計(jì)算結(jié)果壓入堆棧。

    數(shù)據(jù)段(靜態(tài)存儲區(qū)):

      包括BSS段(Block Started by Symbol)的數(shù)據(jù)段。BSS段存儲未初始化或初始化為0的全局變量、靜態(tài)變量,具體體現(xiàn)為一個占位符,并不給該段的數(shù)據(jù)分配空間,只是記錄數(shù)據(jù)所需空間的大小。數(shù)據(jù)段存儲經(jīng)過初始化的全局和靜態(tài)變量。


    查看全部
  • 64位計(jì)算機(jī):指針占8位字節(jié),變量占4位字節(jié)

    查看全部
  • 數(shù)據(jù)段在代碼段之上,所以可以在代碼基礎(chǔ)上改變數(shù)據(jù),數(shù)據(jù)段的內(nèi)存會把相同類型的數(shù)據(jù)存在一起,即整形變量存一起,整形指針存一起。32位計(jì)算機(jī)是隔四個字節(jié)存一個,即0x7fffffffddfc-0x7fffffffddff, 0x7fffffffde00-0x7fffffffde04。

    查看全部
  • 變量的本質(zhì)是內(nèi)存,指針的本質(zhì)是地址。

    例:變量就是給柜子格(內(nèi)存)起名;指針就是在柜子格里放入的地址名,根據(jù)這個地址名找到實(shí)體。

    查看全部
  • 一、指針:int *p; *p 表示所指向的內(nèi)存空間的值; p 是所指向內(nèi)存空間的內(nèi)存首地址; &p 是指p指針變量在內(nèi)存中的地址; 二、指針的操作 當(dāng)聲明一個指針后未進(jìn)行初始化時,他所指向的內(nèi)存地址并不受我們控制,直接使用可能造成其他程序的穩(wěn)定性或自己本身程序的穩(wěn)定性。這就是大家常說的 "野指針"。 用 malloc、calloc、realloc 函數(shù)給指針內(nèi)存分配的空間,使用完畢用free釋放內(nèi)存后要講指針變量置為NULL,防止出現(xiàn)野指針的情況。 指針偏移運(yùn)算:p++、p+=1、p[n] 將指針位置移動所指向的位置,移動的步長與指針指向的具體數(shù)據(jù)類型有關(guān),如在32 bit系統(tǒng)中,int a=1; int * p=&a,如果a的地址為0x7fffffffde14,則p++后 p所指向的內(nèi)存地址為 0x7fffffffde18,步長為4,64 bit系統(tǒng)中將是 8。 三、字符數(shù)組:char str[] = " this is str"; 字符數(shù)組溢出問題,此時str長度應(yīng)為11,如果此時使用 scanf("%s",str); 輸入了超過11個字符的數(shù)據(jù),此時超過該數(shù)組長度的數(shù)據(jù)將會按順序覆蓋掉內(nèi)存地址的值,這樣可能會導(dǎo)致嚴(yán)重的問題 如一些系統(tǒng)安全、數(shù)據(jù)安全、當(dāng)前程序穩(wěn)定性或其他程序穩(wěn)定性。
    查看全部
  • 字符串以\0結(jié)束?

    hell\0? 以字符串輸出%s? hell? ? 以字符輸出%c hello? ?

    \0不輸出,換行就空行

    查看全部
  • https://img1.sycdn.imooc.com//5d004d930001e6f203670281.jpg

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

    char str3[10];

    scanf("%s",str3);

    scanf("%s",str1);可以寫會覆蓋

    scanf("%s",str2);指針不能寫

    str2內(nèi)是world以及world的地址,world存在代碼段,代碼段不能被程序員更改

    查看全部
  • int類型的指針每次加4個字節(jié)

    p++內(nèi)存地址往下移一格

    p+=3? ?*p=101;? ? ? p[3]=101;? ? 內(nèi)存地址往下移3格

    int *p=array;? array是指針常量

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

    2019-06-12

  • https://img1.sycdn.imooc.com//5d0047640001ef9e05900405.jpg

    數(shù)組長度為常量,每一次定義的數(shù)組空間是固定的,聲明的地址空間連續(xù)排放

    x/3d 0x7ffffffffffffde14? ?從0x7ffffffffffffde14開始按10進(jìn)制輸出3個地址的內(nèi)容,間隔4字節(jié)

    查看全部
  • https://img1.sycdn.imooc.com//5cff6b3300012bb904020107.jpg

    指針指向代碼段系統(tǒng)默認(rèn)調(diào)用函數(shù)

    * 指針->指針指向的地址的內(nèi)容

    查看全部
  • 先進(jìn)后出,最先進(jìn)入的函數(shù)在最下面,最先進(jìn)入的函數(shù)地址越小

    數(shù)據(jù)段代碼段越往后聲明的地址越大

    棧越往后聲明的地址越小,棧頂向下分配


    靜態(tài)變量在每個函數(shù)間都不互相影響,是獨(dú)立變量。一個函數(shù)內(nèi)的靜態(tài)變量不管函數(shù)運(yùn)行多少次都在同一位置改動

    全局變量被所有的代碼使用時都在同一地址處改動,相互影響,是唯一的變量

    靜態(tài)變量,常量,全局變量都在數(shù)據(jù)段

    查看全部
  • 1個字節(jié)8位

    1個整型32位,4個字節(jié)

    a的地址是4個字節(jié)的首地址

    ddfc ddfd? ddfe? ddff

    內(nèi)存地址最大值0X7FFFFFFFFFFF

    32位指針4個字節(jié),64位指針8個字節(jié)

    編譯器優(yōu)化會把同一類型的變量聲明放到一起

    查看全部

舉報(bào)

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

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

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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