int main(){
int num = 52;
const int constNum = 52;
//指向常量的指针
const int *ptrToConst = #
//从右向左, 标识符是ptrToConst,*说明是指针,int说明指针指向的是int,const说明指向的int是常量
const int *ptrToConst = &constNum;
//指向常量的指针是本身的值是可以改变的
//指向常量的指针可以指向非常量
//常量的地址只能赋予指向常量的指针
// int *ptr = &constNum;//"const int *" 类型的值不能用于初始化 "int *" 类型的实体
// int *类型的值可以被自动转化为const int *类型的值,
// 反过来则不可以,const int *类型的值不可以自动转化为int *
//对常量使用'&',得到的是const int *类型的值
int const constNum2 = 52;
//从右往左, 标识符是constNum2,const说明该变量是常量,int说明是int型的值
//常量指针
//常量指针是指针这个变量本身被定义为常量,指针变量必须初始化,并且之后不可以被改变值
int num2=214;
const int constNum2=214;
int * const constPtr1 = &num2;
//从右向左,constPtr1是标识符,consts说明是标识符是常量的标识符,*说明常量的类型是指针,int说明指针指向的类型是int(指针储存int值的地址)
//常量指针必须被初始化, 之后不可以被改变值(地址), 但是指针指向的值可以被改变
const double doubleNum = 214.0;
const double * const constPtr2 = &doubleNum;
//从右向左,constPtr2是标识符,const说明是标识符是常量的标识符,*说明常量的类型是指针,int说明指针指向的类型是double,const说明这个double是常量
}
int main(){
int i = 42;
const int &r1 = i;
const int &r2 = 42;
const int &r3 = r1 * 2;
//int &r4 = r1 * 2; // 错误,r4是一个普通的非常量引用
double dval = 3.14;
const int &ri = dval;
// double dval = 3.14;
// const int temp = dval;
// const int &ri = temp;
//常量引用仅对引用可参与的操作进行限定,而不限定引用的对象是否是一个常量
//若常量引用的引用对象是一个非常量, 则可以通过其它途径改变引用对象的值
//但不能通过该常量引用改变引用对象的值
int i = 42;
}
#include <iostream>
int main(){
int n = 10;
for(int i = 0;i<(++n);i+=2)std::cout<<i<<std::endl;
/*
0
2
4
6
8
10
12
14
16
18
20
*/
std::cout<< "adadadad" " adad"<<std::endl;
//当两个字符串字面值相邻且仅由空格,制表符,和换行符分隔时,它们将被连接成一个字符串字面值
int a = 0;
int b = {0};
int c{0};
int d(0);
extern int i; //声明i而非定义i
int j; //声明并定义j
// extern int k = 0; //extern只能用于声明,不能用于定义
int i1 = 0, &r1 = i1;
double d1 = 0, &r2 = d1;
r1 = d1; //合法,但是d1的值会被截断
void* p = &i1;
p = &d1;
int num = 1;
int *p1 = #
int *&r = p1;
//从右向左阅读r的定义,首先r是变量名,&说明r是一个引用,*说明r引用的对象是一个指针,int说明该指针是一个int类型的指针
// int &*r2 = p1; //不允许使用指向引用的指针
}