c++ const 用法总结

最近第二次学习c++ , 却老是忘记const的一些用法, 因此记录一下笔记html

忒困!c++

A: const指针位于 * 的左边

A : const 修饰指针指向的内容, 则内容为不可变量但指针可变;
面试

  称其为左定向, const 位于 * 的左边函数

    int i = 10;
    int j = 20;
    const int *p = &i;
    printf("%d\n", *p);
    
    p = &j; // it's ok
    
    *p = 30; // it's error
    
    i = 39; // it's ok
    printf("%d\n", *p);

 

B: const指针位于 * 的右边

B: const 修饰指针, 则指针为不可变量; 能够改变值, 但不能改变地址
  称其为右定向, const 位于 * 的右边学习

    int a = 8;
    int * const p = &a;
    
    *p = 9;

    int b = 7; // it's error
    p = &b; // it's error
    printf("%d\n", *p);
    printf("%d\n", a); // a也变成9 了

 

C: const指针位于 * 的两边

C: cosnt修饰指针和指针指向的内容, 则指针和指针指向的内容都为不可变量;
  左定值, 右定向, const修饰不变量优化

 

    int a = 8;
    const int * const p = &a;
    
    printf("%d\n", *p);

 

 

D:(int*)a和int*a的区别

不同。(int*)a将指针变量a强制转换为整型指针,说明a通常不是一个整型指针,也能够是个整型指针。int*a,定义一个整型指针变量a






E: 阿里面试题

阿里C++笔试题:const int a = 10;int * p = (int *)(&a);*p=20; 为何结果是a=10,*p=20?spa

编译器优化的结果,编译器在处理 const int a = 10; 
这句时 没有为a分配内存赋值,而是在加入了符号表,后续引用a时有些相似#define a 10这样处理了
int * p = (int *)(&a);这句则 配*p被强制赋值,因此指针有效指向了某个地址,因此出现了上述结果

 

 F: const在成员函数后边

 因为电脑崩溃了, 因此那个网页的内容找不到了, 没记载, 之后补上指针

但整体想表达的意思呢, 就是, 成员函数后边跟上const之后, 里面不能有修改的内容code

  

参考连接: https://www.cnblogs.com/Forever-Kenlen-Ja/p/3776991.htmlhtm

相关文章
相关标签/搜索