最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ for循環(huán)與nullptr的小知識(shí)點(diǎn)分享

 更新時(shí)間:2023年05月24日 09:12:16   作者:云小逸  
這篇文章主要是來(lái)和大家介紹一些C++中的小知識(shí)點(diǎn),本文分享的是for循環(huán)與nullptr,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下

基于范圍的for循環(huán)(C++11)

范圍for的語(yǔ)法

在C++98中如果要遍歷一個(gè)數(shù)組,可以按照以下方式進(jìn)行:

void TestFor()
{
    int array[] = { 1, 2, 3, 4, 5 };
    for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
        array[i] *= 2;
    for (int* p = array; p < array + sizeof(array) / sizeof(array[0]); ++p)
        cout << *p << endl;
}

對(duì)于一個(gè)有范圍的集合而言,由程序員來(lái)說(shuō)明循環(huán)的范圍是多余的,有時(shí)候還會(huì)容易犯錯(cuò)誤。因此C++11中引入了基于范圍的for循環(huán)。for循環(huán)后的括號(hào)由冒號(hào)“ :”分為兩部分:第一部分是范圍內(nèi)用于迭代的變量,第二部分則表示被迭代的范圍。

void TestFor()
{
    int array[] = { 1, 2, 3, 4, 5 };
    for (auto& e : array)
        e *= 2;
    for (auto e : array)
        cout << e << " ";
    return 0;
}

注意:與普通循環(huán)類似,可以用continue來(lái)結(jié)束本次循環(huán),也可以用break來(lái)跳出整個(gè)循環(huán)。

范圍for的使用條件

1.for循環(huán)迭代的范圍必須是確定的

對(duì)于數(shù)組而言,就是數(shù)組中第一個(gè)元素和最后一個(gè)元素的范圍;對(duì)于類而言,應(yīng)該提供begin和end的方法,begin和end就是for循環(huán)迭代的范圍。

注意:以下代碼就有問(wèn)題,因?yàn)閒or的范圍不確定

void TestFor(int array[])
{
    for (auto& e : array)
        cout << e << endl;
}

2.迭代的對(duì)象要實(shí)現(xiàn)++和==的操作。(關(guān)于迭代器這個(gè)問(wèn)題,以后會(huì)講,現(xiàn)在提一下,沒(méi)辦法講清楚,現(xiàn)在大家了解一下就可以了)

指針空值nullptr(C++11)

在良好的C/C++編程習(xí)慣中,聲明一個(gè)變量時(shí)最好給該變量一個(gè)合適的初始值,否則可能會(huì)出現(xiàn)不可預(yù)料的錯(cuò)誤,比如未初始化的指針。如果一個(gè)指針沒(méi)有合法的指向,我們基本都是按照如下方式對(duì)其進(jìn)行初始化:

void TestPtr()
{
int* p1 = NULL;
int* p2 = 0;
// ……
}

NULL實(shí)際是一個(gè)宏,在傳統(tǒng)的C頭文件(stddef.h)中,可以看到如下代碼:

可以看到,NULL可能被定義為字面常量0,或者被定義為無(wú)類型指針(void*)的常量。不論采取何種定義,在使用空值的指針時(shí),都不可避免的會(huì)遇到一些麻煩,比如:

void f(int)
{
    cout << "f(int)" << endl;
}
void f(int*)
{
    cout << "f(int*)" << endl;
}
int main()
{
    f(0);
    f(NULL);
    f((int*)NULL);
    return 0;
}

程序本意是想通過(guò)f(NULL)調(diào)用指針版本的f(int*)函數(shù),但是由于NULL被定義成0,因此與程序的初衷相悖。

在C++98中,字面常量0既可以是一個(gè)整形數(shù)字,也可以是無(wú)類型的指針(void*)常量,但是編譯器默認(rèn)情況下將其看成是一個(gè)整形常量,如果要將其按照指針?lè)绞絹?lái)使用,必須對(duì)其進(jìn)行強(qiáng)轉(zhuǎn)(void *)0。

注意:

在使用nullptr表示指針空值時(shí),不需要包含頭文件,因?yàn)閚ullptr是C++11作為新關(guān)鍵字引入的。

在C++11中,sizeof(nullptr) 與 sizeof((void*)0)所占的字節(jié)數(shù)相同。

為了提高代碼的健壯性,在后續(xù)表示指針空值時(shí)建議最好使用nullptr。

總結(jié)

到此這篇關(guān)于C++ for循環(huán)與nullptr的小知識(shí)點(diǎn)分享的文章就介紹到這了,更多相關(guān)C++ for循環(huán) nullptr內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++的static靜態(tài)成員你有了解嗎

    C++的static靜態(tài)成員你有了解嗎

    這篇文章主要為大家詳細(xì)介紹了C++的static靜態(tài)成員,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 關(guān)于C++運(yùn)算符重載的一些困惑詳解

    關(guān)于C++運(yùn)算符重載的一些困惑詳解

    這篇文章主要給大家介紹了關(guān)于C++運(yùn)算符重載的一些困惑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Cocos2d-x UI開(kāi)發(fā)之CCControlSlider控件類使用實(shí)例

    Cocos2d-x UI開(kāi)發(fā)之CCControlSlider控件類使用實(shí)例

    這篇文章主要介紹了Cocos2d-x UI開(kāi)發(fā)之CCControlSlider控件類使用實(shí)例,本文代碼中包含大量注釋講解了CCControlSlider控件類的使用,需要的朋友可以參考下
    2014-09-09
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)與算法之時(shí)間空間復(fù)雜度入門

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)與算法之時(shí)間空間復(fù)雜度入門

    這篇文章主要為大家介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)與算法之時(shí)間空間復(fù)雜度的入門教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • C++ 11 std::function和std::bind使用詳解

    C++ 11 std::function和std::bind使用詳解

    這篇文章主要介紹了C++ 11 std::function和std::bind使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 淺談C語(yǔ)言共用體和與結(jié)構(gòu)體的區(qū)別

    淺談C語(yǔ)言共用體和與結(jié)構(gòu)體的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談C語(yǔ)言共用體和與結(jié)構(gòu)體的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • c++算法進(jìn)階刪除有序鏈表中的重復(fù)元素

    c++算法進(jìn)階刪除有序鏈表中的重復(fù)元素

    這篇文章主要為大家介紹了c++算法進(jìn)階刪除有序鏈表中的重復(fù)元素示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • c語(yǔ)言隨機(jī)數(shù)函數(shù)示例

    c語(yǔ)言隨機(jī)數(shù)函數(shù)示例

    這篇文章主要介紹了c語(yǔ)言隨機(jī)數(shù)函數(shù)示例,需要的朋友可以參考下
    2014-04-04
  • C語(yǔ)言基礎(chǔ)操作之操作符、進(jìn)制與數(shù)據(jù)表示通俗講解

    C語(yǔ)言基礎(chǔ)操作之操作符、進(jìn)制與數(shù)據(jù)表示通俗講解

    C語(yǔ)言為我們提供了許多的操作符來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的處理,比如基本的加減乘除,這篇文章主要介紹了C語(yǔ)言基礎(chǔ)操作之操作符、進(jìn)制與數(shù)據(jù)表示通俗講解的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-08-08
  • vs code 配置c/c++環(huán)境的詳細(xì)教程(推薦)

    vs code 配置c/c++環(huán)境的詳細(xì)教程(推薦)

    這篇文章主要介紹了vs code 配置c/c++環(huán)境的詳細(xì)教程(推薦),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

诸城市| 闵行区| 正蓝旗| 张家港市| 和田县| 湘阴县| 郁南县| 西充县| 婺源县| 巫山县| 安康市| 西和县| 东港市| 霍林郭勒市| 金堂县| 西乌珠穆沁旗| 长垣县| 招远市| 曲水县| 松溪县| 商洛市| 扬中市| 清涧县| 平利县| 蒲城县| 通州市| 元氏县| 遂川县| 名山县| 水富县| 四川省| 普兰县| 万盛区| 清徐县| 湘潭市| 清流县| 沧州市| 乾安县| 菏泽市| 翼城县| 横峰县|