C/C++查漏補缺(常更)

1、#define宏定義html

  以下程序段,則輸出結果爲:c++

  #define MAX 12數組

  int main(){函數

    cout << "20\0MAX019" << endl;指針

  }htm

  輸出結果:20 , 知識點:#define定義 的宏常量不替換程序中""裏的東西blog

  http://www.javashuo.com/article/p-dwzicydq-gm.html字符串

2、const常量指針與指針常量get

  定義一個int常量string

  const int a = 10;

  int const a = 10;

  這兩種方法都是合法的,意義相同。當const用於指針呢?

  int * const p = &a; // 指針常量 p = NULL; 非法

  int const *p = &a; // 常量指針 *p = 20; 非法

  const int *p = &a; // 常量指針

  若想定義一個指針,既不能改變其值,也不能改變其指向的值,

  const int * const p = &a; 

  下面這個語句看着有點怪怪的

  int const * const p = &a;

  其實它實現了和上一條定義相同的效果

3、printf()函數

  以下輸出語句是否正確

  char *s = "parliament";

  printf(s); // ok, 輸出 parliament

  printf(s+1); // ok, 輸出arliament

  printf("c++"+1); // ok,輸出++ 

  (對於輸出結果不明白的參見第四條)

  初學c時,接觸的用printf()輸出字符串的方式就是printf("%s", 字符串);第一次看到上面的輸出語句以爲是語法錯誤,直到前天(2019.11.18)看到87年一道鍵盤字母對應的題目題解後才返回來又看了一下,沒想到是正確的。

  該題連接

  http://www.javashuo.com/article/p-xwcjvtse-gd.html

4、字符串常量

  在以前的文章裏提到過字符串常量表明的實際上是一個地址,是字符串首元素的地址,今天再把它細說一下

  好比字符串常量"string",看着是一個字符串,其實本質是一個const char*的地址,是一個地址常量

  "string"+1則表明將該地址移動 1*char個字節數,即移動到第二個元素't'的地址,此時輸出結果爲 "tring"

  "string"[1]呢?至關於*("string"+1),取第二個元素的值,即't'

  1["string"]呢?同上啦,和數組下標用法是相同的

相關文章
相關標籤/搜索