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 ,字符常量;

    所有博文均为原著,如若转载,请注明出处!
  • 相关阅读:
    Delphi中的进制转换
    delphi inttohex 整型到十六进制
    delphi将程序最小化至右下角
    sql server 本地复制订阅 实现数据库服务器 读写分离
    我在DBGridEh增加一栏复选框及对应操作的解决方案
    Application.CreateForm()和TForm.Create()创建的窗体有什么区别么?二者在使用上各有什么技巧?(50分)
    学用 TStringGrid [6]
    SQL Server中一些有用的日期sql语句
    MVC中的@Html.DisplayFor等方法如何控制日期的显示格式(转)
    ASP.NET MVC自定义AuthorizeAttribute篇知识点讲解—登录限制
  • 原文地址:https://www.cnblogs.com/zpcoding/p/10314534.html
Copyright © 2011-2022 走看看