• C++ Primer Plus读书笔记02


    2012-02-22

    1、 结构体中可以指定占特定位数的成员

    struct mytest

    {       int age:4        //用冒号分隔,则变量age占4字节

            unsigned char a:4              //同上

    }

    2、 union共用体,当数据项使用多种格式(但不会同时使用时),比struct节省空间

    3、 new过程的3步    S1分配内存  S2调用所new对象的构造函数  S3返回对象的引用

    4、 int *p1,p2              //创建了一个指针和一个整型变量

    5、 几种指针分配策略

    int value=6;    int *p_value;  p_value=&value;         //正确

    int a=5;    int *p=&a;             //正确

    int *p=new int ;      *p=100;         //正确

    int *p;      *p=100;  //错误,p没有初始化,可能为任意值,∴100的地址可能为任意值

    并且,sizeof(p)==4,sizeof(*p)取决于类型

    int a[5];    sizeof(a)==20;

    int *p=new int [5];         sizeof(p)==4;

    int *s=a;          sizeof(s)==4;

    6、 delete只可以释放new分配的内存,释放数组时 delete [] p;

    7、 若p是一个指针,cout<<p将打印p 的地址

    特例:若p是char型指针,cout<<p打印字符串,cout<<(int *)p打印地址

    8、char a[20]=”test”;   char *ps;              ps=animal      //此时并不复制字符串,只复制地址,两个指针指向同一个内存单元

          ps=new char[strlen(a)+1];   strcpy(ps,a);  //获取副本,此时两个指针指向不同单元

    9、对于字符串数组,初始化时可以char a[10]=”test”;

    否则不应该用赋值,而用strcpy()或strncpy();

    如strcpy(a,”test”);        strncpy(a,”test”,9)//9表示要复制的最大字符数,防止数组比字符串小,越界

    10、100个字符串,长度1-79之间,合理存储

           mindset:创建一个数组,包含100个指向char的指针,每个指针长度不固定

           示例:char *name;      name=getname();        delete    []     name;

           char * getname(){

           char temp[80];      cin>>temp;    char *p=new char[strlen(temp)+1];   strcpy(p,temp);

           return p;

           }//返回p而不是返回temp,合理减少了所用空间,比返回temp节省空间

    11、++i与i++

           ++i  将i增1,再返回值,效率高

           i++ 先复制一个拷贝,再将其增1,再将复制的拷贝返回,效率低

    12、int a=30,50   //a==30,逗号运算符优先级最低,所以先赋值30

           int a=(30,50) //a==50,逗号表达式的值为第二部分的值,所以为50

    13、char word[];

           比较word中字符串是不是”test”

           if(word==”test”)           //错,此式子比较2个字符串是否存储在相同地址上,而非内容相同(虽然包含相同的字符串,但不在同一个地址)

           if(strcmp(word,”test”)==0)         //正确

          

           string word;

           if(word==”test”)           //正确,含有string 可以正确比较,而char数组则不行

  • 相关阅读:
    CDN与缓存的归纳理解
    CSRF介绍与应对以及Java代码示例
    java严格验证日期是否正确的代码
    consul(一)什么是consul
    服务发现--初识Consul
    Consul 快速入门
    spring cloud: 使用consul来替换eureka
    Eureka&Zookeeper&Consul 原理与对比
    服务发现框架选型,Consul还是Zookeeper还是etcd
    腾讯运维10年,我斩获了这5把“杀手锏”
  • 原文地址:https://www.cnblogs.com/yangtianxing/p/2435008.html
Copyright © 2020-2023  润新知