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"]呢?同上啦,和数组下标用法是相同的