chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

為什么使用指針?C++中的“指針”

SwM2_ChinaAET ? 來源:未知 ? 作者:李倩 ? 2018-10-04 10:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

指針是用來保存內(nèi)存地址的變量。每個(gè)被定義的變量都有自己的地址,可以用指針來存放任何被定義的變量的地址。如(p存放的是變量的地址,*p存放的是變量的數(shù)據(jù)。):

inta;//定義一個(gè)整型變量a int*p;//定義一個(gè)指向整型變量的指針p p=&a;//將變量a的地址賦給變量p

定義一個(gè)指針后一定要用它保存一個(gè)內(nèi)存地址,如果不那么做的話,那么該指針就是一個(gè)失控指針,它可以指向任何地址,并且對(duì)該地址的數(shù)值進(jìn)行修改或者刪除,可能會(huì)造成意想不到的后果。所以,可以將指針初始化為0,如:

int*p;p=0;或者int*p=0;

由于不同類型的變量在內(nèi)存中所占用的字節(jié)不同,而指針又是用來保存內(nèi)存地址的變量,因此指針只能存儲(chǔ)與它類型相同的變量的地址。

注意區(qū)分指針地址、指針保存的地址和該地址的值,如:

inta=1; int*p=&a; cout<

為什么使用指針?因?yàn)樵诓僮鞔笮蛿?shù)據(jù)和類時(shí),指針可以通過內(nèi)存地址直接訪問數(shù)據(jù),可避免在程序中復(fù)制大量的代碼,因此指針的效率最高。一般來說,指針會(huì)有3大用途:

(1)處理堆中存放的大型數(shù)據(jù);

(2)快速訪問類的成員數(shù)據(jù)和函數(shù);

(3)以別名的方式向函數(shù)傳遞參數(shù)。

如何使用堆?首先創(chuàng)建一個(gè)堆,然后定義一個(gè)指向該堆的指針,最后通過該指針就可以訪問堆中的數(shù)據(jù)。在C++中使用關(guān)鍵字new創(chuàng)建一個(gè)堆并分配內(nèi)存,在new后面跟一個(gè)要分配的對(duì)象類型,編譯器根據(jù)這個(gè)類型來分配內(nèi)存。如:

int*p;p=newint;或int*p=newint;//分配了四個(gè)字節(jié)的內(nèi)存空間

由于使用new創(chuàng)建的內(nèi)存空間不會(huì)被系統(tǒng)自動(dòng)釋放,因此假如不去釋放它,那么該區(qū)域的內(nèi)存將始終不能為其他數(shù)據(jù)所使用,而指向該內(nèi)存的指針是個(gè)局部變量,當(dāng)定義該指針的函數(shù)結(jié)束并返回時(shí),指針也就消失了,從而再也找不到這塊內(nèi)存區(qū)域,這種情況叫做內(nèi)存泄漏。因此,當(dāng)不需要一塊內(nèi)存空間,可以使用關(guān)鍵字delete釋放該內(nèi)存空間(不要再次對(duì)該指針進(jìn)行刪除,因?yàn)樗赶虻膬?nèi)存區(qū)域已經(jīng)被釋放,如果再進(jìn)行釋放,將會(huì)使程序崩潰。但是,如果將該指針賦為0的話,那么刪除一個(gè)指針是安全的。),但不會(huì)釋放該指針,指針可以繼續(xù)使用。另外,當(dāng)用delete釋放一個(gè)指針?biāo)赶虻目臻g后,最好將該指針的內(nèi)存地址清0。如:

int*p=newint; deletep; p=0;

還可以在堆中創(chuàng)建對(duì)象(創(chuàng)建對(duì)象時(shí)會(huì)自動(dòng)調(diào)用類的構(gòu)造函數(shù)來初始化對(duì)象的成員數(shù)據(jù)),如下,定義了一個(gè)Human類的指針p,指向new創(chuàng)建的內(nèi)存空間。占用內(nèi)存大小由Human類對(duì)象的成員變量來決定。

Human*p;p=newHuman;或Human*p=newHuman;

如果要?jiǎng)h除在堆中創(chuàng)建的對(duì)象,可以直接刪除指向該對(duì)象的指針,這樣會(huì)自動(dòng)調(diào)用對(duì)象的析構(gòu)函數(shù)來銷毀該對(duì)象,同時(shí)釋放內(nèi)存。

可以通過指針變量訪問堆中創(chuàng)建的對(duì)象,如下,其中->是成員指針運(yùn)算符,利用該符號(hào)可以實(shí)現(xiàn)讀取對(duì)象的內(nèi)存地址并且訪問該對(duì)象的成員的作用。

(*p).get();或p->get();

指針可以進(jìn)行加減操作,如下,定義了一個(gè)指針并指向int型變量,執(zhí)行加1操作,會(huì)將原來的內(nèi)存地址增加4個(gè)字節(jié);執(zhí)行減1操作,會(huì)將原來的內(nèi)存地址減少4個(gè)字節(jié)。

int*p=newint; p++; p--;

常量指針是指該指針不可改變,但其指向的數(shù)據(jù)可改變,如下:

int*constp;

指向常量的指針是指該指針可改變,但其指向的數(shù)據(jù)不可改變,如下:

constint*p;

指向常量的常指針是指該指針不可變,其指向的數(shù)據(jù)也不可變,如下:

constint*constp;

聲明:本文內(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)投訴
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    484

    瀏覽量

    71676
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2122

    瀏覽量

    76713
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1669

    瀏覽量

    51082

原文標(biāo)題:【博文連載】C++中的“指針”

文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    淺談C/C++里的指針

    指針CC++的難點(diǎn)和重點(diǎn)。指針C的靈魂。我不想重復(fù)大多數(shù)書上說得很清楚的東西,只是把我看
    發(fā)表于 06-28 10:21 ?696次閱讀

    關(guān)于C++函數(shù)指針的使用

    關(guān)于C++函數(shù)指針的使用(包含對(duì)typedef用法的討論) (一)簡(jiǎn)單的函數(shù)指針的應(yīng)用。 //形式1:返回類型(*函數(shù)名)(參數(shù)表) char (*pFun)(int); c
    發(fā)表于 07-13 03:51

    C指針_CC++經(jīng)典著作

    C指針_CC++經(jīng)典著作,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-16 18:32 ?0次下載

    C++實(shí)驗(yàn)--指針

    C++實(shí)驗(yàn)--指針
    發(fā)表于 12-30 14:50 ?1次下載

    C++指針”學(xué)習(xí)建議

    C++指針”學(xué)習(xí)建議
    發(fā)表于 03-31 15:53 ?3次下載

    C指針習(xí)題答案配C指針

    C指針習(xí)題答案配C指針
    發(fā)表于 09-07 14:29 ?6次下載
    <b class='flag-5'>C</b>和<b class='flag-5'>指針</b>習(xí)題答案配<b class='flag-5'>C</b>和<b class='flag-5'>指針</b>

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

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

    C++指針的學(xué)習(xí)建議

     一。對(duì)于眾多人提出的c/c++指針難學(xué)的問題做個(gè)總結(jié):
    發(fā)表于 11-07 17:13 ?8次下載
    <b class='flag-5'>C++</b><b class='flag-5'>指針</b>的學(xué)習(xí)建議

    C++封裝:this指針

    C++封裝:this指針
    的頭像 發(fā)表于 06-29 14:37 ?3960次閱讀
    <b class='flag-5'>C++</b>封裝:this<b class='flag-5'>指針</b>

    C++const以及this指針的使用

    const 作用 修飾變量,說明該變量不可以被改變; 修飾指針,分為指向常量的指針(pointer to const)和自身是常量的指針(常量指針,const pointer); 修飾
    的頭像 發(fā)表于 09-23 11:39 ?2444次閱讀

    CC++經(jīng)典著作《C指針

    CC++經(jīng)典著作《C指針
    發(fā)表于 01-17 09:46 ?0次下載

    C語言中的懸空指針和野指針是什么意思?

    提起C語言大部分開發(fā)者很自然就會(huì)想到指針二字,沒錯(cuò),作為C的核心和靈魂,它的地位咱們就不再贅述了,今天我們想跟大家講的是指針的兩個(gè)特有名詞
    的頭像 發(fā)表于 02-09 17:20 ?1664次閱讀

    C++中有函數(shù)指針還需要std::function嘛

    C/C++可以使用指針指向一段代碼,這個(gè)指針就叫函數(shù)指針,假設(shè)有這樣一段代碼:
    的頭像 發(fā)表于 02-15 14:13 ?910次閱讀
    <b class='flag-5'>C++</b>中有函數(shù)<b class='flag-5'>指針</b>還需要std::function嘛

    C++的引用和指針

    之前的文章我們已經(jīng)介紹了C++的基本類型如int,bool和double等,除了基本類型C++還有一些更復(fù)雜的數(shù)據(jù)類型復(fù)合類型,所謂的復(fù)合類型就是通過其他類型定義的類型,本篇文章我們將會(huì)著重介紹
    的頭像 發(fā)表于 03-17 14:00 ?1098次閱讀

    C++智能指針的底層實(shí)現(xiàn)原理

    C++智能指針的頭文件: #include 1. shared_ptr: 智能指針從本質(zhì)上來說是一個(gè)模板類,用類實(shí)現(xiàn)對(duì)指針對(duì)象的管理。 template class shared_pt
    的頭像 發(fā)表于 11-09 14:32 ?1369次閱讀
    <b class='flag-5'>C++</b>智能<b class='flag-5'>指針</b>的底層實(shí)現(xiàn)原理