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"]呢?同上啦,和數組下標用法是相同的