欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

范圍for的語法

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

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

對于一個有范圍的集合而言,由程序員來說明循環(huán)的范圍是多余的,有時候還會容易犯錯誤。因此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來跳出整個循環(huán)。

范圍for的使用條件

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

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

注意:以下代碼就有問題,因為for的范圍不確定

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

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

指針空值nullptr(C++11)

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

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

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

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

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既可以是一個整形數(shù)字,也可以是無類型的指針(void*)常量,但是編譯器默認情況下將其看成是一個整形常量,如果要將其按照指針方式來使用,必須對其進行強轉(zhuǎn)(void *)0。

注意:

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

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

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

總結(jié)

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

相關(guān)文章

  • 實例分享cmake編譯一個簡單c++項目(demo)

    實例分享cmake編譯一個簡單c++項目(demo)

    下面通過一個小例子來說明cmake編譯一個c++項目,生成可執(zhí)行文件,需要的朋友可以參考下
    2020-02-02
  • C語言單雙線性及循環(huán)鏈表與實例

    C語言單雙線性及循環(huán)鏈表與實例

    這篇文章主要介紹了C語言的單鏈表、雙鏈表和循環(huán)鏈表,還有一些相關(guān)的實例,感興趣的同學(xué)可以借鑒一下
    2023-03-03
  • C++中的數(shù)組、鏈表與哈希表

    C++中的數(shù)組、鏈表與哈希表

    這篇文章主要介紹了C++中的數(shù)組、鏈表與哈希表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 簡單總結(jié)C語言中的運算符優(yōu)先級

    簡單總結(jié)C語言中的運算符優(yōu)先級

    這篇文章主要介紹了C語言中的運算符優(yōu)先級,文中簡單總結(jié)了一些常用運算符的優(yōu)先級順序以及記憶技巧,需要的朋友可以參考下
    2016-05-05
  • C++實現(xiàn)歸并排序算法

    C++實現(xiàn)歸并排序算法

    這篇文章主要為大家詳細介紹了C++實現(xiàn)歸并排序算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語言深入探索浮點數(shù)的使用秘密

    C語言深入探索浮點數(shù)的使用秘密

    在C語言中,浮點數(shù)是一個很重要的類型,浮點數(shù)可以使數(shù)據(jù)更為精確。浮點數(shù)說白了就是帶有小數(shù)點的數(shù)。比如1.6?0.0000?765.2等等,浮點數(shù)具體是怎么用的呢,讓我們一起來看看
    2022-04-04
  • C++之文件輸入/輸出流類解讀

    C++之文件輸入/輸出流類解讀

    這篇文章主要介紹了C++之文件輸入/輸出流類,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C++詳細講解圖的拓撲排序

    C++詳細講解圖的拓撲排序

    拓撲排序(Topological?Sorting)若一個由圖中所有點構(gòu)成的序列?A?滿足:對于圖中的每條邊?(x,y),x?在?A?中都出現(xiàn)在?y?之前,則稱?A?是該圖的一個拓撲序列
    2022-05-05
  • Qt實現(xiàn)TCP網(wǎng)絡(luò)編程

    Qt實現(xiàn)TCP網(wǎng)絡(luò)編程

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)TCP網(wǎng)絡(luò)編程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • STL區(qū)間成員函數(shù)及區(qū)間算法總結(jié)

    STL區(qū)間成員函數(shù)及區(qū)間算法總結(jié)

    這篇文章主要匯總介紹了STL區(qū)間成員函數(shù)及區(qū)間算法,有需要的小伙伴可以參考下。
    2015-07-07

最新評論