0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言中指針變量簡述

嵌入式應(yīng)用開發(fā) ? 來源:嵌入式應(yīng)用開發(fā) ? 作者:嵌入式應(yīng)用開發(fā) ? 2022-09-09 08:55 ? 次閱讀

指針是變量,那必然會(huì)有變量類型,因此這里必須對變量類型做解釋。在C語言中,所有的變量都有變量類型,整型、浮現(xiàn)型、字符型、指針類型、結(jié)構(gòu)體、聯(lián)合體、枚舉等,這些都是變量類型。變量類型的出現(xiàn)是內(nèi)存管理的必然結(jié)果,相信讀者知道,所有的變量都是保存在計(jì)算機(jī)的內(nèi)存中,既然是放到計(jì)算機(jī)的內(nèi)存中,那必然會(huì)占用一定的空間,問題來了,一個(gè)變量會(huì)占用多少空間呢,或者說應(yīng)該分出多少內(nèi)存空間來放置該變量呢?為了規(guī)定這個(gè),類型由此誕生了,對于32位編譯器來說,int類型占用4個(gè)字節(jié),即32位,long類型占用8字節(jié),即64位。這里簡單說了類型主要是為后面引出指針這個(gè)特殊性,在計(jì)算機(jī)中,將要運(yùn)行的程序都保存在內(nèi)存中,所有的程序中的變量其實(shí)就是對內(nèi)存的操作。

#include "stdio.h"

int main(int argc, char **argv)
{
    unsigned int a = 10;
    unsigned int *p = NULL;
    p = &a;
    printf("&a=%d\n",a);
    printf("&a=%d\n",&a);
    *p = 20;
    printf("a=%d\n",a);
    return 0;
}

運(yùn)行之后,結(jié)果如圖:

poYBAGMZ4KaAOMFjAAA2FHvcDxQ921.png

指針也是一個(gè)變量,那個(gè)指針也應(yīng)該被存放在內(nèi)存中,對于32位編譯器來說,其尋址空間為2^32=4GB,為了能夠都操作所有內(nèi)存(實(shí)際上普通用戶不可能操作所有內(nèi)存),指針變量存放也要用32位數(shù)即4個(gè)字節(jié)。這樣就有指針的地址&p,指針和變量的關(guān)系可以用如下圖表示:

poYBAGMZ4OWAKwIyAABuqOukfgk263.png

從上圖可以看到&p是指針的地址,用來存放指針p,而指針p來存放變量a的地址,也就是&a,還有一個(gè)*p在C語言中是解引,意思是告訴編譯器取出該地址存放的內(nèi)容。

poYBAGMZ4QuAIGh2AABHkopwFVU324.png

對于不同類型指針而言,其p+1所指向的地址不同,這個(gè)遞增取決于指針類型所占的內(nèi)存大小,而對于((unsigned int)p)+1,該意思是將地址p所指向的地址的值直接轉(zhuǎn)換為數(shù)字,然后+1,這樣無論p是何種類型的指針,其結(jié)果都是指針?biāo)傅牡刂泛笠粋€(gè)地址。

從上述可以看到,指針的存在使得程序員可以相當(dāng)輕松的操作內(nèi)存,這也使得當(dāng)前有些人認(rèn)為指針相當(dāng)危險(xiǎn),這一觀點(diǎn)表現(xiàn)在C#Java語言中,然而實(shí)際上用好指針可以極大的提高效率。下面深入一點(diǎn)來通過指針對內(nèi)存進(jìn)行操作,現(xiàn)在我們需要對內(nèi)存6422216中填入一個(gè)數(shù)據(jù)125,我們可以如下操作:

unsigned int *p=(unsigned int*)(6422216);
*p=125;
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7594

    瀏覽量

    135864
  • 指針變量
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    7227
收藏 人收藏

    評論

    相關(guān)推薦

    C語言中指針變量的使用

      在使用時(shí),一定要注意上面“*“號的用法差異。還需要注意的是,一個(gè)指針變量只能指向與其數(shù)據(jù)類型相同的變量。
    發(fā)表于 08-15 15:12 ?2037次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中指針</b><b class='flag-5'>變量</b>的使用

    C語言中指針的定義

    上一節(jié)中,我們利用了一個(gè)小知識來介紹了一下指針,在上面這個(gè)例子中,小明和小麗手中的這個(gè)杯子就好比我們C語言中變量,它確實(shí)是實(shí)實(shí)在在存放一些有具體意義的數(shù)據(jù)。這個(gè)杯套就類似于
    發(fā)表于 08-15 16:24 ?1788次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中指針</b>的定義

    C語言中指針的定義與使用

    指針也就是內(nèi)存地址,指針變量是用來存放內(nèi)存地址的變量,不同類型的指針變量所占用的存儲(chǔ)單元長度是相
    的頭像 發(fā)表于 10-13 17:00 ?2224次閱讀

    C語言指針加1引發(fā)的思考

    最近有小伙伴對于 C 語言中指針的運(yùn)算有點(diǎn)疑問:指針變量加 1 之后,到底向后偏移了幾個(gè)字節(jié)呢?
    的頭像 發(fā)表于 01-29 11:31 ?1133次閱讀

    C語言中指針函數(shù)和函數(shù)指針的概念及應(yīng)用示例

    C語言中,指針函數(shù)和函數(shù)指針是強(qiáng)大且常用的工具。它們允許我們以更靈活的方式處理函數(shù)和數(shù)據(jù),進(jìn)而擴(kuò)展程序的功能。
    發(fā)表于 08-16 16:14 ?685次閱讀

    C語言中指針的基本概念和用法

    C語言中,指針是一項(xiàng)重要的概念,它允許我們直接訪問和操作內(nèi)存地址。
    發(fā)表于 08-17 15:30 ?699次閱讀

    談?wù)?b class='flag-5'>C語言中指針有什么好處,請各位高手們談?wù)勛约旱捏w會(huì)

    談?wù)?b class='flag-5'>C語言中指針有什么好處,請各位高手們談?wù)勛约旱捏w會(huì)...
    發(fā)表于 09-01 17:38

    語言中指針的介紹

    的內(nèi)容。在C語言中, 允許用一個(gè)變量來存放指針,這種變量稱為指針變量。因此,一個(gè)
    發(fā)表于 09-10 14:22

    C語言中指針的介紹非常詳細(xì)

    C語言中指針的介紹非常詳細(xì) C語言中指針的介紹非常詳細(xì)
    發(fā)表于 12-25 10:39 ?57次下載

    基于C語言中指針的基本用法解析

    C語言中其它的知識都學(xué)得可以,唯獨(dú)指針搞不懂。如果是這樣,我可以很負(fù)責(zé)的告訴你,對于這門編程語言,你等于是沒學(xué)。所以學(xué)好指針對于初學(xué)者是非
    的頭像 發(fā)表于 01-09 15:12 ?4766次閱讀

    C語言中的野指針是怎么來的?

    一、什么是野指針? 指針C語言的靈魂,同時(shí)也是很容易讓人犯錯(cuò)的重難點(diǎn),用錯(cuò)了指針將是一個(gè)災(zāi)難。 指針
    的頭像 發(fā)表于 06-01 16:43 ?2514次閱讀

    C語言中指針(重點(diǎn))超詳細(xì)

    C語言中指針1、指針是什么2、指針指針類型2.1、指針
    發(fā)表于 01-13 14:10 ?11次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的<b class='flag-5'>指針</b>(重點(diǎn))超詳細(xì)

    C語言怎樣引用指針變量

    指針C語言中的一個(gè)重要概念,也是C語言的一個(gè)重要特色。正確而靈活地運(yùn)用它,可以使程序簡潔、緊湊、高校。 由于通過地址能找到所需的
    的頭像 發(fā)表于 03-10 14:43 ?983次閱讀

    C語言中什么是指針數(shù)組

    C語言中一個(gè)數(shù)組,若其元素均為指針類型數(shù)據(jù),稱為指針數(shù)組,也就是說,指針數(shù)組中的每一個(gè)元素都存放一個(gè)地址,相當(dāng)于一個(gè)
    的頭像 發(fā)表于 03-10 15:26 ?1633次閱讀

    簡述C語言中指針重點(diǎn)

    C語言中一個(gè)函數(shù)可以返回一個(gè)整型值、字符值、實(shí)型值等,也可以返回指針型的數(shù)據(jù),即地址,其概念與以前類似,只是返回的值的類型是指針類型。
    的頭像 發(fā)表于 03-10 15:28 ?567次閱讀