zoukankan      html  css  js  c++  java
  • 易错点总结

    1,printf,cout 输出是从右往左压栈的。

     1 int main(){
     2     int b=3;
     3     int arr[]={6,7,8,9,10};
     4     int *ptr=arr;
     5     *(ptr++) += 123;   // 等同于  *ptr = *ptr+123; ptr=ptr++;  ptr++ : 先用 ptr,再将 ptr++ 
     6     cout<<*arr<<endl; 
     7     printf("%d,%d
    ",*ptr,*(++ptr)); //和下面输出相同,printf 计算参数时是从右往左压栈的; 
     8     cout<<*ptr<<*(++ptr)<<endl;  //输出顺序从右往左 ;同上 ,输出 8 8 
     9     return 0;
    10 }

     2,类型转换。https://blog.csdn.net/gaoranfighting/article/details/44351831

     1 #include<iostream>
     2 #include<conio.h>
     3 
     4 using namespace std;
     5 
     6 int main(){
     7     float a = 1.0f;
     8     cout<<(int)a<<endl; //1
     9     cout<<&a<<endl;  // 0x70fe3c 
    10     cout<<(int&)a<<endl; // 1065353216
    11     cout<<boolalpha<<((int)a == (int&)a)<<endl; // false
    12     
    13     float b = 0.0f;  
    14     cout<<(int)b<<endl; // 0
    15     cout<<&b<<endl;  // 0x70fe38
    16     cout<<(int&)b<<endl;  // 0
    17     cout<<boolalpha<<((int)b == (int&)b)<<endl; // true
    18     return 0;
    19 } 

    3,const 的不同位置产生的区别:https://blog.csdn.net/u010571660/article/details/9623973

    一个比较经典的问题--问以下两种声明的区别:

    1)const char* p

    2)char* const p

    3)char const *p

    这里的 const 关键字是用于修饰常量,书上说 const 将修饰离它最近的对象,所以,以上两种声明的意思分别应该是:

    1)p 是一个常量字符的指针,不变的是 char 的值,即该字符的值在定义时初始化后就不能改变。(const char)

    2)p 是一个指向字符的常量指针,不变的是 p 的值,即该指针不能再指向别的。(const p)

    3)p 是一个指针,指针保存的是  char 类型,const 修饰的仍然是 char, 因为 const 只能修饰变量,不能修饰 * ,所以不变的仍然是 char 的值;(等同于 1 )

    如何记忆呢?

    Bjarne 在他的 《The C++ Programming Language》里给过一个助记的方法--------“以 * 分界,把一个声明从右往左读”。

    注意语法:* 读作 pointer to (指向...的指针),const (常量)是形容词,char (类型变量)和 p (变量名) 都是名词。

    1)const char* p 读作:p is a pointer to a const char ; 译为:p 是一个指针(变量),它指向一个常量字符(const char);

    2)char* const p 读作:p is a const pointer to a char ; 译为:p 是一个常量指针(const p),它指向一个字符(变量)。

    注意:

    先看 const int a 和 int const a ,这里没有分界符 * ,虽然 const 的位置不同,但意思不变,它 const 修饰的是 int,常量整数;

    再看 const char* p 和 char const *p ,首先以 * 分界,虽然 const 的位置改变了,但它都是在修饰 char ,字符常量;

    所有博文均为原著,如若转载,请注明出处!
  • 相关阅读:
    ubuntu下 apt-get install 下载的文件存放的目录
    ubuntu 上更新安装 openoffice.org3的过程
    ubuntu中flash的中文乱码解决方法
    ubuntu 安装AMP环境的笔记 Prefork方式与fast-cgi方法
    socket 基础知识
    php 处理透明背景的图片时的问题
    RHEL 8 Speculation
    心之力
    (OK) 在内核中,获得 某目的地址的下一跳的数目,kernel 4.4
    Linux内核分析
  • 原文地址:https://www.cnblogs.com/zpcoding/p/10314534.html
Copyright © 2011-2022 走看看