c++,constAndPointeradfsjignijkasnk,C++ primer note



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 = &num;
    int *&r = p1;
    //从右向左阅读r的定义,首先r是变量名,&说明r是一个引用,*说明r引用的对象是一个指针,int说明该指针是一个int类型的指针
    
    // int &*r2 = p1; //不允许使用指向引用的指针
}
posted @ 2025-03-07 19:47  Kazuma_124  阅读(6)  评论(0)    收藏  举报