zoukankan      html  css  js  c++  java
  • 程序员面试宝典笔记一二

    一、实现两个变量的交换,不借助中间变量

    void change(int &a,int &b){
    //方法一,这种方法的一个问题就是可能两个数相加越界
            //a=a+b;
            //b=a-b;
            //a=a-b;
    
    //方法二,利用异或
            a=a^b;
            b=a^b;
            a=a^b;
    }

    二、比较两个数值的大小,不使用任何流程控制语句

    int max=(a+b+abs(a-b))/2;

    三、sizeof和strlen的区别

    (1)sizeof是一个运算符,然而strlen是一个函数

    (2)sizeof可以使用类型、变量或者函数作为参数(不能用于未知存储大小数据的数据类型),然而strlen必须使用char*作为参数,兵器必须是‘’结尾

    (3)sizeof 的结果在编译的时候就计算过了,因此可以用来定义数组维数,然而strlen只是在运行的时候才计算

    (4)sizeof计算内存分配的最大空间容量,而strlen计算实际占用的空间

    (5)sizeof 的结果类型是size_t;是在头文件中被定义为的unsigned int 类型。

    (6)sizeof在计算结构体或者类型的大小的时候需要考虑对齐(对数据体成员或者成员变量的对齐),sizeof计算的是栈中的分配大小,对于存放在全局数据区的静态变量不会计算在内,

    (7)空类的sizeof为1,多重继承的空类空间为1,虚继承空间为4,只有成员函数的为一个指针大小4,具有成员变量的sizeof需要考虑成员变量的对齐。

    (8)当数组在函数中传递的时候,已经退化为了一个指针,如果需要其大小,需要传入额外的大小信息。

      7 int main(){
      8         char *ss="0123456789";
      9         char s[10]="01234";
     10         int a[10]={1,2,3,4};
     11         string strArr1[]={"ab","cd"};
     12         string *pstrArr2=new string[2];
     13         cout<<"sizeof(ss)"<<sizeof(ss)<<endl;//结果是4
     14         cout<<"sizeof(*ss)"<<sizeof(*ss)<<endl;//结果是1
     15         cout<<"strlen(ss)"<<strlen(ss)<<endl;//结果是10
     16         cout<<"strlen(s)"<<strlen(s)<<endl;//结果是5
     17         cout<<"sizeof(a)"<<sizeof(a)<<endl;//结果是40
     18         cout<<"sizeof(string)"<<sizeof(string)<<endl;//结果是4,相当于指针大小
     19         cout<<"sizeof(strArr1)"<<sizeof(strArr1)<<endl;//结果是8,相当于两个指针大小
     20         cout<<"sizeof(pstrArr2)"<<sizeof(pstrArr2)<<endl;//结果是4,指针大小
     21         return 0;
     22 }
    ~         
     

    四、指针

    指针和引用

    指针可以指向空值,引用不能为空,必须在定义的同时进行初始化,并且不能改变,当然引用变量的内容可以改变

    const常量也必须在定义的同时进行初始化

  • 相关阅读:
    为什么使用Redis
    [Apache Pulsar] 企业级分布式消息系统-Pulsar快速上手
    [Apache Pulsar] 企业级分布式消息系统-Pulsar入门基础
    JDK源码分析系列---ArrayList和LinkList
    JDK源码分析系列---String,StringBuilder,StringBuffer
    单点登录
    单例模式的几种实现方式
    Bloom’S Taxonomy
    Python 字符串多替换时性能基准测试
    软件开发的生产力vs质量
  • 原文地址:https://www.cnblogs.com/bobodeboke/p/3395025.html
Copyright © 2011-2022 走看看