C++入門3——指針、數(shù)組和結(jié)構(gòu)

指針

  • 指針是左結(jié)合的。int p;(指向整型的指針)。char ** p;——>(char)*p,指向字符串指針的指針
  • 零:可以被用作任意類型,浮點類型、指針等;當0作為一個指針文字量時,表示一個指針當時并沒有指向任何對象。C中用一個宏NULL表示0指針,C++中多直接使用0
  • 指針的加減運算:依賴于指針指向的類型。對于int *p,p++會移動int的大小;double *p,p++會移動double的大小
  • const
    • char *const p;指向字符串的指針,這個指針為常量,不能再指向其他對象
    • char const* p;const char* p;指向常量字符串的指針,這個指針可以指向其他對象,但是指針所指向的字符串對象不能有所更改
  • 引用:引用是一個對象的另一個名字,引用的出現(xiàn)主要是為了函數(shù)的參數(shù)和返回值
    • 引用到底有什么作用???????

    • 引用與指針的區(qū)別:
      • 引用必須不能為NULL,但是指針可以為NULL;所以指針需要做NULL檢查,但是指針不需要
      • 引用必須初始化,且引用指向一個對象后,就不能再指向其他對象
      • 引用的一個簡單的實現(xiàn)就是常量指針
      • 址傳遞和引用傳遞看起來一樣,為什么還要用引用傳遞?
        • 實際上"引用"可以做的任何事情"指針"也都能夠做,為什么還要"引用"這東西? 答案是"用適當?shù)墓ぞ咦銮∪缙浞值墓ぷ?。
        • 指針能夠毫無約束地操作內(nèi)存中的任何東西,盡管指針功能強大,但是非常危險。
        • 如果的確只需要借用一下某個對象的"別名",那么就用"引用",而不要用"指針",以免發(fā)生意外。
  • 指向void的指針:一個指向任何對象類型的指針都可以賦給類型為void*的變量。對void*做其他任何操作都會引起編譯錯誤,要使用void*,就必須顯示地轉(zhuǎn)換到某個指向特定類型的指針。
  • struct
    • 數(shù)組是相同類型元素的一個聚集,結(jié)構(gòu)體是各種元素的聚集
    • struct的定義大括號{ }結(jié)束時必須在括號后有分號
    • 結(jié)構(gòu)體對象的大小并不是簡單的其成員的大小之和,因為結(jié)構(gòu)體對象具有對齊的性質(zhì)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 題目類型 a.C++與C差異(1-18) 1.C和C++中struct有什么區(qū)別? C沒有Protection行為...
    阿面a閱讀 7,714評論 0 10
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,537評論 1 51
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 2,014評論 0 7
  • 一、字符串操作 strcpy(p, p1) 復制字符串 strncpy(p, p1, n) 復制指定長度字符串 s...
    JaiUnChat閱讀 1,675評論 0 7
  • 在初中時期,老師總會讓我們?nèi)チ私庹n外知識,多讀中外名著。那時《三國演義》《水滸傳》是我們男孩子心目中的書刊,有...
    星夜傾聽閱讀 368評論 0 0