• C/C++ basic


    字面值:
    u 定义为unsigned
    l 定义为long
    例:-12u 12l -12ul
    科学计数:
    ExF 或者ExLF x代表10的次方数
    3.14E5F //314000
    转义:
    \num num可以是八进制\062,十六进制\xddd
    字符串:
    L代表宽字符 L'a' L"a"
    多行字面值 \

    定义引用:
    把a的引用给b
    int a=10;
    int &b=a;
    b++;//a,b都为11
    和以下等价
    int *b=&a;
    (*b)++;

    迭代器:
    vector<int> v;
    for(vector<int>::iterator itr=v.begin();itr!=v.end();itr++)
    *irt=0;
    只读迭代器
    forvector<int>::const_iterator itr=v.begin();itr!=v.end();itr++)
    cout<<*irt;

    数组:
    初始化: const unsigned array_size = 3;
    int ia[array_size] = {0, 1, 2};
    int ia[] = {0, 1, 2};
    在函数体外定义的数组会默认初始化,函数体内定义的不会初始化,(如果是int,初始化会是1,不然会是不确定的数)
    C++中建议使用vector,数组初始化vector方法是提供首地址和末地址后一个
    vector<int> vi(ia,ia+3)

    位操作:

    unsigned int int_quiz1 = 0;
    int_quiz1 |=1UL<<10;    //设置第10位为1
    if(int_quiz1&(1UL<<10)) //判断第10位是否是1
        cout<<"10 true"<<endl;
    int_quiz1 &=~(1UL<<10); //设置第10位为0
    //C++中推荐使用bitset
    bitset<13> b(int_quiz1);
    b.set(10); 
    b.reset(10);
    cout<<b.to_string()<<endl;

    机器相关数据类型:

    ptrdiff_t 2个指针差signed,同一数组,不同数组可能会溢出
    size_t usigned类型

    字符串:
    strncpy 的标准用法为:(手工写上 \0)

    const char* cp1="1111111111111111111111"; //最好定义为const char*,因为字符串常量无法修改,尝试修改会报错 
    const char* cp2="2222222222222222222222";
    char largeStr[16 + 18 + 2]={0}; // 需要有初始化,不然strncat找不到\0标记,导致找不到字符串的末尾 
    strncpy(largeStr, cp1, 16); 
    strncat(largeStr, " ", 2); 
    strncat(largeStr, cp2,17); // 至少保留一位,用于存放\0结束标记
    largeStr[16 + 18+1]='\0';//添加字符串结束标记
    cout<<largeStr; 

    尽量使用strncat_s 带安全监测,溢出会报出异常,比如上面使用strncat(largeStr, cp2,19)会直接报错

  • 相关阅读:
    Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发
    python--如何在线上环境优雅的修改配置文件?
    Python补充--Python内置函数清单
    python3--open函数
    内置函数--map,filter,reduce
    Python内置函数—bytearray
    python lambda表达式简单用法
    Python浅拷贝copy()与深拷贝deepcopy()区别
    点击复制
    eval(function(p,a,c,k,e,d){e=function(c)加解密
  • 原文地址:https://www.cnblogs.com/FlyCat/p/2810866.html
Copyright © 2020-2023  润新知