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

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

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

嵌入式開發(fā)之C語言的指針

電子工程師 ? 來源:未知 ? 作者:胡薇 ? 2018-11-06 17:09 ? 次閱讀

指針是C 語言的特色,使其更靈活。

C語言編程中善用指針可以簡(jiǎn)化一些任務(wù)的處理,而對(duì)于一些任務(wù)(比如動(dòng)態(tài)內(nèi)存分配),必須要有指針才行的。也就是說精通C指針編程是很有必要的,幫助你成為一名優(yōu)秀的Cer。

每個(gè)變量有其對(duì)應(yīng)的內(nèi)存位置,每一個(gè)內(nèi)存位置都定義了可使用連字號(hào)(&)運(yùn)算符訪問的地址,它表示了在內(nèi)存中的一個(gè)地址。

下面是一個(gè)輸出定義的變量地址的實(shí)例:

編譯和執(zhí)行,產(chǎn)生下列結(jié)果:

var1 變量的地址:0x7fff5cc109d4var2 變量的地址:0x7fff5cc109de

什么是指針?

寫了上面的代碼之后,再來了解下什么是指針。

實(shí)際上指針也是變量,其中存放了其他變量的地址。就像其他變量或常量一樣,使用之前要先聲明。指針聲明形式:

type *var-name;

type是指針的基類型,必須為有效的C語言數(shù)據(jù)類型,var-name是指針變量名。"*"用來聲明這是指針變量。以下都是有效的指針聲明形式:

int *ip; /* 一個(gè)整型的指針 */

double *dp; /* 一個(gè) double 型的指針 */

float *fp; /* 一個(gè)浮點(diǎn)型的指針 */

char *ch; /* 一個(gè)字符型的指針 */

指針?biāo)赶虻淖兞炕虺A康臄?shù)據(jù)類型不同,但是,所有指針的值都是一個(gè)代表內(nèi)存地址的十六進(jìn)制數(shù)。

指針的使用

使用指針的基本操作:

定義一個(gè)指針變量

把變量地址賦值給指針

訪問指針變量中可用地址的值

這些是通過使用一元運(yùn)算符“*”來返回位于操作數(shù)所指定地址的變量的值。

下面是指針應(yīng)用的實(shí)例:

當(dāng)代碼被編譯、執(zhí)行,產(chǎn)生結(jié)果如下:

Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable:20

C語言中的NULL指針

在變量聲明的時(shí)候,如果沒有確切的地址可以賦值,為指針變量賦一個(gè) NULL 值是一個(gè)良好的編程習(xí)慣。賦為 NULL 值的指針被稱為空指針。

NULL 指針是一個(gè)定義在標(biāo)準(zhǔn)庫中的值為零的常量。請(qǐng)看下面的程序:

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

ptr 的地址是0x0

在大多數(shù)的操作系統(tǒng)上,程序不允許訪問地址為 0 的內(nèi)存,因?yàn)樵搩?nèi)存是操作系統(tǒng)保留的。然而,內(nèi)存地址 0 有特別重要的意義,它表明該指針不指向一個(gè)可訪問的內(nèi)存位置。但按照慣例,如果指針包含空值(零值),則假定它不指向任何東西。

如需檢查一個(gè)空指針,您可以使用 if 語句,如下所示:

if(ptr) /* 如果 p 非空,則完成 */

if(!ptr) /* 如果 p 為空,則完成 */

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

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134016
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    475

    瀏覽量

    70457

原文標(biāo)題:C語言的指針

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式開發(fā)中為什么選擇C++語言

    一、C++概述1.嵌入式開發(fā)中為什么選擇C++語言?(1)面向過程編程的特點(diǎn)C語言特點(diǎn):
    發(fā)表于 10-27 08:25

    為什么嵌入式開發(fā)要使用C語言

    ID:技術(shù)讓夢(mèng)想更偉大作者:李肖遙對(duì)于現(xiàn)在我們從事嵌入式開發(fā)的人員來說,C語言好像是必備的技能,也是最常見的開發(fā)語言.但是我們有沒有想過為什
    發(fā)表于 11-05 08:45

    嵌入式開發(fā)為什么選擇C語言?

    1、嵌入式開發(fā)為什么選擇C語言?(面試題?。。。?b class='flag-5'>嵌入式開發(fā)中操作系統(tǒng)是核心,需要移植,并在上層和底層做開發(fā),而操作系統(tǒng)的核心是內(nèi)核,所有內(nèi)核
    發(fā)表于 12-15 07:45

    嵌入式開發(fā)語言有哪些_最全面嵌入式開發(fā)語言概述

    嵌入式開發(fā)語言有哪些?嵌入式開發(fā)的入門門檻還是比較高的,不僅要懂較底層軟件,對(duì)軟件專業(yè)水平要求較高,而且必須懂得硬件的工作原理,嵌入式系統(tǒng)應(yīng)用越來越廣泛,目前,在
    發(fā)表于 01-29 14:47 ?9673次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b><b class='flag-5'>語言</b>有哪些_最全面<b class='flag-5'>嵌入式開發(fā)</b><b class='flag-5'>語言</b>概述

    嵌入式開發(fā)通常采用哪種編程語言

    目前在嵌入式開發(fā)領(lǐng)域比較常見的編程語言C,另外C++、Python、JavaScript等語言也可以進(jìn)行
    發(fā)表于 06-18 16:59 ?1.6w次閱讀

    嵌入式系統(tǒng)為什么選擇C語言作為開發(fā)語言

    了解嵌入式開發(fā)的朋友們都非常的清楚其核心的開發(fā)語言C語言,C
    發(fā)表于 07-10 17:01 ?1977次閱讀

    什么是嵌入式開發(fā)?為什么用C語言作為開發(fā)語言

    內(nèi)部做開發(fā)的,而操作系統(tǒng)所有的內(nèi)核都是C語言所編寫的,所以說在嵌入式開發(fā)的過程中也選擇C語言,肯
    發(fā)表于 11-02 18:50 ?12次下載
    什么是<b class='flag-5'>嵌入式開發(fā)</b>?為什么用<b class='flag-5'>C</b><b class='flag-5'>語言</b>作為<b class='flag-5'>開發(fā)</b><b class='flag-5'>語言</b>?

    嵌入式開發(fā)為什么不選擇匯編、Java而是C語言呢?

    ID:技術(shù)讓夢(mèng)想更偉大作者:李肖遙對(duì)于現(xiàn)在我們從事嵌入式開發(fā)的人員來說,C語言好像是必備的技能,也是最常見的開發(fā)語言.但是我們有沒有想過為什
    發(fā)表于 11-02 19:21 ?45次下載
    <b class='flag-5'>嵌入式開發(fā)</b>為什么不選擇匯編、Java而是<b class='flag-5'>C</b><b class='flag-5'>語言</b>呢?

    嵌入式開發(fā)為什么選擇C語言作為開發(fā)語言?

    了解嵌入式開發(fā)的朋友們都非常的清楚其核心的開發(fā)語言C語言C
    發(fā)表于 11-03 09:21 ?17次下載
    <b class='flag-5'>嵌入式開發(fā)</b>為什么選擇<b class='flag-5'>C</b><b class='flag-5'>語言</b>作為<b class='flag-5'>開發(fā)</b><b class='flag-5'>語言</b>?

    VScode嵌入式開發(fā)入門教程

    VScode嵌入式開發(fā)入門教程1.VScode進(jìn)行單片機(jī)嵌入式開發(fā)教程2.單片機(jī)開發(fā)環(huán)境的搭建3.相關(guān)技巧與設(shè)置
    發(fā)表于 11-03 09:51 ?44次下載
    VScode<b class='flag-5'>嵌入式開發(fā)</b><b class='flag-5'>之</b>入門教程

    VScode嵌入式開發(fā)ESP32以及ESP8266入門

    VScode嵌入式開發(fā)ESP32以及ESP8266入門1.適用與有部分C語言開發(fā)者或者學(xué)生學(xué)習(xí)ESP系列的
    發(fā)表于 11-03 12:51 ?29次下載
    VScode<b class='flag-5'>嵌入式開發(fā)</b><b class='flag-5'>之</b>ESP32以及ESP8266入門

    嵌入式為什么選擇C語言作為開發(fā)語言

    了解嵌入式開發(fā)的朋友們都非常的清楚其核心的開發(fā)語言C語言,C
    發(fā)表于 11-03 14:06 ?15次下載
    <b class='flag-5'>嵌入式</b>為什么選擇<b class='flag-5'>C</b><b class='flag-5'>語言</b>作為<b class='flag-5'>開發(fā)</b><b class='flag-5'>語言</b>?

    嵌入式開發(fā)中為什么選擇C語言?它有哪些特點(diǎn)?

    眾所周知,C語言嵌入式開發(fā)中占據(jù)著十分重要的地位,為什么嵌入式開發(fā)要選擇C語言?
    的頭像 發(fā)表于 01-04 09:56 ?1099次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>中為什么選擇<b class='flag-5'>C</b><b class='flag-5'>語言</b>?它有哪些特點(diǎn)?

    c語言嵌入式開發(fā)

    電子發(fā)燒友網(wǎng)站提供《c語言嵌入式開發(fā).zip》資料免費(fèi)下載
    發(fā)表于 11-17 14:11 ?2次下載
    <b class='flag-5'>c</b><b class='flag-5'>語言</b><b class='flag-5'>嵌入式開發(fā)</b>

    嵌入式C語言的結(jié)構(gòu)特點(diǎn)

    嵌入式開發(fā)中既有底層硬件的開發(fā)又涉及上層應(yīng)用的開發(fā),即涉及系統(tǒng)的硬件和軟件,C語言既具有匯編語言
    的頭像 發(fā)表于 11-24 16:16 ?520次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>的結(jié)構(gòu)特點(diǎn)