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

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

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

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

范圍for的語法

在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;
}

對于一個(gè)有范圍的集合而言,由程序員來說明循環(huán)的范圍是多余的,有時(shí)候還會(huì)容易犯錯(cuò)誤。因此C++11中引入了基于范圍的for循環(huán)。for循環(huán)后的括號由冒號“ :”分為兩部分:第一部分是范圍內(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來結(jié)束本次循環(huán),也可以用break來跳出整個(gè)循環(huán)。

范圍for的使用條件

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

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

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

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

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

指針空值nullptr(C++11)

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

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

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

可以看到,NULL可能被定義為字面常量0,或者被定義為無類型指針(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;
}

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

在C++98中,字面常量0既可以是一個(gè)整形數(shù)字,也可以是無類型的指針(void*)常量,但是編譯器默認(rèn)情況下將其看成是一個(gè)整形常量,如果要將其按照指針方式來使用,必須對其進(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

    這篇文章主要為大家介紹了C語言數(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使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 淺談C語言共用體和與結(jié)構(gòu)體的區(qū)別

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

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

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

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

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

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

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

    C語言為我們提供了許多的操作符來實(shí)現(xiàn)對數(shù)據(jù)的處理,比如基本的加減乘除,這篇文章主要介紹了C語言基礎(chǔ)操作之操作符、進(jìn)制與數(shù)據(jù)表示通俗講解的相關(guān)資料,文中通過代碼介紹的非常詳細(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ì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評論

金塔县| 沽源县| 永福县| 志丹县| 上蔡县| 邓州市| 鲁甸县| 佛山市| 遵义县| 威宁| 莲花县| 娱乐| 宝清县| 鸡西市| 京山县| 明光市| 巩留县| 民县| 策勒县| 涡阳县| 资阳市| 巨野县| 龙里县| 大同县| 五台县| 宁乡县| 正宁县| 阿鲁科尔沁旗| 岳池县| 锦州市| 洛隆县| 石阡县| 天长市| 阜康市| 通海县| 嫩江县| 肥乡县| 定兴县| 青田县| 句容市| 勃利县|