當前位置:編程學習大全網 - 編程語言 - 在C語言中壹個指針占用多少字節。

在C語言中壹個指針占用多少字節。

指針即為地址,指針幾個字節跟語言無關,而是跟系統的尋址能力有關。

比如以前是16位系統,指針即為2個字節,現在壹般是32位系統,所以是4個字節。

指針是壹個特殊的變量,它裏面存儲的數值被解釋成為內存裏的壹個地址。要搞清壹個指針需要搞清指針的四方面的內容:指針的類型、指針所指向的類型、指針的值或者叫指針所指向的內存區、指針本身所占據的內存區。

擴展資料:

1、指針的類型

從語法的角度看,妳只要把指針聲明語句裏的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。讓我們看看例壹中各個指針的類型:

(1)int*ptr;//指針的類型是int*

(2)char*ptr;//指針的類型是char*

(3)int**ptr;//指針的類型是int**

(4)int(*ptr)[3];//指針的類型是int(*)[3]

(5)int*(*ptr)[4];//指針的類型是int*(*)[4]

2、指針所指向的類型

當妳通過指針來訪問指針所指向的內存區時,指針所指向的類型決定了編譯器將把那片內存區裏的內容當做什麽來看待。

從語法上看,妳只須把指針聲明語句中的指針名字和名字左邊的指針聲明符*去掉,剩下的就是指針所指向的類型。例如:

(1)int*ptr; //指針所指向的類型是int

(2)char*ptr; //指針所指向的的類型是char

(3)int**ptr; //指針所指向的的類型是int*

(4)int(*ptr)[3]; //指針所指向的的類型是int()[3]

(5)int*(*ptr)[4]; //指針所指向的的類型是int*()[4]

3、指針的值或者叫指針所指向的內存區或地址

指針的值是指針本身存儲的數值,這個值將被編譯器當作壹個地址,而不是壹個壹般的數值。在32 位程序裏,所有類型的指針的值都是壹個32 位整數,因為32 位程序裏內存地址全都是32 位長。

指針所指向的內存區就是從指針的值所代表的那個內存地址開始,長度為sizeof(指針所指向的類型)的壹片內存區。以後,我們說壹個指針的值是XX,就相當於說該指針指向了以XX 為首地址的壹片內存區域。

我們說壹個指針指向了某塊內存區域,就相當於說該指針的值是這塊內存區域的首地址。指針所指向的內存區和指針所指向的類型是兩個完全不同的概念。在例壹中,指針所指向的類型已經有了,但由於指針還未初始化,所以它所指向的內存區是不存在的,或者說是無意義的。

4、指針本身所占據的內存區

在32 位平臺裏,指針本身占據了4 個字節的長度。

百度百科-指針

  • 上一篇:Python購物籃數據(關聯分析)
  • 下一篇:上海交通大學船舶與海洋工程本科學啥
  • copyright 2024編程學習大全網