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

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

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

C程序設(shè)計(jì)基礎(chǔ)-指針

汽車電子技術(shù) ? 來源:滑小稽筆記 ? 作者:滑小稽 ? 2023-03-02 10:11 ? 次閱讀

1、內(nèi)存地址

用戶在程序中定義了一個(gè)變量,對程序進(jìn)行編譯時(shí),系統(tǒng)就會(huì)給這個(gè)變量分配內(nèi)存單元,內(nèi)存區(qū)的每一個(gè)字節(jié)都有一個(gè)編號(hào),這就是內(nèi)存地址,相當(dāng)于旅館的房間號(hào),內(nèi)存地址所表示的內(nèi)存單元中存放的數(shù)據(jù)就相當(dāng)于這個(gè)房間住的旅客,假設(shè)內(nèi)存地址0x00000028中存放了一個(gè)字節(jié)的數(shù)據(jù)0x28,那么如果我找到了這個(gè)內(nèi)存地址,也就相當(dāng)于我查到了這里面的數(shù)據(jù)0x28,可以說地址指向該變量的單元,因此,將地址稱為了指針,意思就是說通過它可以找到以它為地址的內(nèi)存單元。

2、指針變量與指針

一個(gè)變量存放的地址就稱為該變量的指針,如果有一個(gè)變量專門用來存放另一個(gè)變量的地址,那這個(gè)變量就稱為指針變量,指針變量的值是地址。

3、指針變量的定義:通常在變量名前面加一個(gè)“*”就代表這是一個(gè)指針變量,如下圖所示。

圖片

9行和第10行都是定義了一個(gè)名為num的字符型指針變量,不過推薦使用第10行的定義方式,如果不進(jìn)行地址初始化,就會(huì)成為所說的野指針(就是不知道指向哪個(gè)位置了)。

4、指針變量的賦值:指針變量的賦值如下圖所示。

圖片

首先定義了一個(gè)指針變量num,然后定義了一個(gè)變量a,并設(shè)置a的值為0xAA,現(xiàn)在將a的地址傳給num,這就有了第11行的語句,其中&代表取址,即獲取變量a所在的地址,此時(shí)可以將num指向的數(shù)據(jù)打印出來。

圖片

此時(shí)程序的運(yùn)行結(jié)果如下圖所示。

圖片

顯然,此時(shí)指針變量指向的地址是007CF80B H,這個(gè)內(nèi)存單元中存放的數(shù)據(jù)為100,就是變量a的初始值。

5、指針變量的使用

現(xiàn)在來進(jìn)行一個(gè)實(shí)驗(yàn),將變量a的值和變量b的值交換,程序如下圖所示。

圖片

程序運(yùn)行結(jié)果如下圖所示。

圖片

現(xiàn)在思考這么一個(gè)問題,為什么交換兩個(gè)數(shù)據(jù)要使用指針的方式呢,定義全局變量不是也可以達(dá)到這個(gè)效果嗎?首先全局變量在編程的過程中要保證越少越好,因?yàn)槿肿兞康拿?guī)則是不允許重復(fù)的,全局空間因?yàn)樘幱谧铐攲右彩亲畲蟮拿臻g里,所以變量名要保持獨(dú)立,不沖突,就需要更完整的表達(dá)它的含義,所以名字就會(huì)更傾向于寫的很長。全局變量數(shù)量越多,取名的難度就會(huì)更大,其次,有的時(shí)候全局變量太多會(huì)有一些莫名其妙的BUG,但是即想要少用全局變量,又要達(dá)到數(shù)據(jù)共享的目的要怎么辦。

   這就有兩種途徑,一種是子函數(shù)的返回值,另一種就是指針,調(diào)用子函數(shù)的返回值會(huì)耗費(fèi)掉一部分時(shí)間,這個(gè)時(shí)間在計(jì)算機(jī)編程中獲取可以忽略不計(jì),但是在后續(xù)的單片機(jī)編程中就會(huì)格外顯眼,一般為了保證控制系統(tǒng)的實(shí)時(shí)性,一些重要的代碼都會(huì)放在中斷里執(zhí)行,此時(shí),只需要用指針指向?qū)?yīng)的內(nèi)存地址,需要的時(shí)候讀一下即可,指針可以定義成局部指針變量,也就解決了全局變量過多的問題。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    478

    瀏覽量

    70491
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28306
  • 地址
    +關(guān)注

    關(guān)注

    1

    文章

    31

    瀏覽量

    10738
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    c語言程序設(shè)計(jì)案例教程

    據(jù)類型和運(yùn)算符、順序程序設(shè)計(jì)、分支程序設(shè)計(jì)、循環(huán)結(jié)構(gòu)、數(shù)組等。學(xué)習(xí)C語言一定要知道它的利器——指針。這正是C語言強(qiáng)大、高效和靈活的地方。如果
    發(fā)表于 07-20 07:25

    c++程序設(shè)計(jì)教程

    C++是一種高效應(yīng)用的程序設(shè)計(jì)語言,它即可進(jìn)行過程化程序設(shè)計(jì),也可進(jìn)行面向?qū)ο?b class='flag-5'>程序設(shè)計(jì),因而成了編程人員最廣泛使用的工具。學(xué)好C++,很容易
    發(fā)表于 04-08 00:36 ?124次下載
    <b class='flag-5'>c</b>++<b class='flag-5'>程序設(shè)計(jì)</b>教程

    C/ C++/ Java 程序設(shè)計(jì)經(jīng)典教程》

    C/ C++/ Java 程序設(shè)計(jì)經(jīng)典教程》(Deitel 著) ●集作者幾十年程序設(shè)計(jì)經(jīng)驗(yàn)之精華,從軟件工程的原理強(qiáng)調(diào)結(jié)構(gòu)化程序設(shè)計(jì)
    發(fā)表于 04-08 02:10 ?398次下載

    C#程序設(shè)計(jì)與案例教程

    C#程序設(shè)計(jì)與案例教程全書共分九章,按C#知識(shí)的系統(tǒng)性,由淺入深安排內(nèi)容,全面介紹了C# 語言基礎(chǔ),面向?qū)ο?b class='flag-5'>程序設(shè)計(jì),GUI
    發(fā)表于 10-22 11:05 ?158次下載
    <b class='flag-5'>C</b>#<b class='flag-5'>程序設(shè)計(jì)</b>與案例教程

    C程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書

    本書重點(diǎn)講述了C語言程序設(shè)計(jì)以下幾個(gè)方面的內(nèi)容,包括順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),數(shù)組,函數(shù),指針以下結(jié)構(gòu)體程序設(shè)計(jì)實(shí)習(xí).
    發(fā)表于 06-21 09:38 ?0次下載

    最簡單的C程序設(shè)計(jì)_ 順序程序設(shè)計(jì)

    最簡單的c語言程序設(shè)計(jì),提供ppt教程,簡單易懂
    發(fā)表于 12-02 09:37 ?0次下載

    C語言程序設(shè)計(jì)介紹

    包括:C 語言概述,算法基礎(chǔ),數(shù)據(jù)類型、運(yùn)算符與表達(dá)式,順序 結(jié)構(gòu)程序設(shè)計(jì),選擇結(jié)構(gòu)程序設(shè)計(jì),循環(huán)結(jié)構(gòu)程序設(shè)計(jì),數(shù)組,函數(shù),預(yù)處理命令,指針
    發(fā)表于 02-17 15:49 ?0次下載

    C語言程序設(shè)計(jì)

    C語言程序設(shè)計(jì)
    發(fā)表于 05-16 11:05 ?0次下載

    C程序設(shè)計(jì)的詳細(xì)中文資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C程序設(shè)計(jì)的詳細(xì)中文資料免費(fèi)下載內(nèi)容包括了: 程序設(shè)計(jì)C語言,算法---程序的靈魂,最簡單的
    發(fā)表于 08-01 08:00 ?0次下載

    C程序設(shè)計(jì)中的指針詳細(xì)資料講解免費(fèi)下載

    C程序設(shè)計(jì)中使用指針可以: 1.使程序簡潔、緊湊、高效2.有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)3.動(dòng)態(tài)分配內(nèi)存4.得到多于一個(gè)的函數(shù)返回值
    發(fā)表于 10-12 15:07 ?16次下載
    <b class='flag-5'>C</b><b class='flag-5'>程序設(shè)計(jì)</b>中的<b class='flag-5'>指針</b>詳細(xì)資料講解免費(fèi)下載

    簡單的C程序設(shè)計(jì)教程之順序程序設(shè)計(jì)的資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是簡單的C程序設(shè)計(jì)教程之順序程序設(shè)計(jì)的資料概述。
    發(fā)表于 11-16 16:17 ?4次下載
    簡單的<b class='flag-5'>C</b><b class='flag-5'>程序設(shè)計(jì)</b>教程之順序<b class='flag-5'>程序設(shè)計(jì)</b>的資料概述

    C語言程序設(shè)計(jì)教程之指針使用的課件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言程序設(shè)計(jì)教程之指針使用的課件免費(fèi)下載指針使用主要內(nèi)容 地址與指針,
    發(fā)表于 11-16 17:47 ?15次下載
    <b class='flag-5'>C</b>語言<b class='flag-5'>程序設(shè)計(jì)</b>教程之<b class='flag-5'>指針</b>使用的課件免費(fèi)下載

    C語言程序設(shè)計(jì)學(xué)習(xí)之?dāng)?shù)組中的指針資料說明

    C程序設(shè)計(jì)中使用指針可以:使程序簡潔、緊湊、高效,有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),動(dòng)態(tài)分配內(nèi)存,得到多于一個(gè)的函數(shù)返回值
    發(fā)表于 11-16 17:47 ?19次下載
    <b class='flag-5'>C</b>語言<b class='flag-5'>程序設(shè)計(jì)</b>學(xué)習(xí)之?dāng)?shù)組中的<b class='flag-5'>指針</b>資料說明

    C++程序設(shè)計(jì)教程之指針的詳細(xì)資料說明

    本文檔詳細(xì)介紹的是C++程序設(shè)計(jì)教程之指針的詳細(xì)資料說明主要內(nèi)容包括了:1. 指針的概念,2. 變量與指針,3. 數(shù)組與
    發(fā)表于 03-14 16:04 ?7次下載
    <b class='flag-5'>C</b>++<b class='flag-5'>程序設(shè)計(jì)</b>教程之<b class='flag-5'>指針</b>的詳細(xì)資料說明

    C語言指針用作函數(shù)參數(shù)模塊化程序設(shè)計(jì)以及增量測試方法的程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言指針用作函數(shù)參數(shù)模塊化程序設(shè)計(jì)以及增量測試方法的程序。
    發(fā)表于 12-25 08:00 ?1次下載
    <b class='flag-5'>C</b>語言<b class='flag-5'>指針</b>用作函數(shù)參數(shù)模塊化<b class='flag-5'>程序設(shè)計(jì)</b>以及增量測試方法的<b class='flag-5'>程序</b>