• 日常笔记5C/C++快速入门一些基础细节


    一、变量数据类型

    1. int大致范围:-2*109~2*109
    2. long long大致范围:-9*1018~9*1018,对于长整型来说,如果赋值大于2^31-1的初值,就需要在初值后面加上LL,否则会编译错误。
    3. float单精度大致范围:小数点后6~7位
    4. double双精度大致范围:小数点后15~16位
    5. char字符型大致范围:-128~127
    6. 09、AZ、az的ASCII码值分别是4857、6590、97122
    7. 不可以使用定义好的数组名,直接进行赋值会报错,如果要赋值带上下标。同时,字符串和字符的单双引号,一定要区别开来。
    8. 布尔型变量,在C++中可以直接使用,如果在C语言中使用必须添加stdbool.h头文件。
    9. define pi 3.14,注意后面没有分号,也可以使用const double pi = 3.14;

    二、输入输出格式问题

    scanf:

    1. int : %d 是以空白符即空格、换行为结束判断标志的
    2. long long : %lld
    3. float : %f
    4. double: %lf
    5. char : %c ,%c格式是可以读入空格和换行的
    6. 字符串(char数组):%s 字符数组使用%s读入的时候以空格和换行行为作为结束标志的
    7. 特别注意在scanf中除了char数组整个输入的情况不加&之外,其他变量类型都需要加&

    printf:

    1. 除了浮点数中的都可以使用成%f,其他都一样。
    2. 输出格式%md可以使不足m位的int型变量以m位进行右对齐输出,其中高位用空格补齐,如果变量本身超过m位,则保持原样。
    3. %0md,只是在上面多了个0,唯一不同就是,不足m位的时候,使用0补齐而不是空格。
    4. %.mf可以让浮点数保持m位小数输出(保留的精度是四舍六入五成双)
    5. typedef可以给一个复杂的数据类型起一个别名,例如:typedef long long LL;

    常用math函数

    1. fabs(double x): 用于对double型变量取绝对值
    2. floor(double x)和ceil(double x):这两个函数用来向下取整和向上取整
    3. pow(double r, double p)该函数用于返回r^p
    4. sqrt(double):用于求算术平方根
    5. log(double x):用于返回自然对数为底的对数,C语言中没有对任意底数求对数的函数,因此需要使用换底公式。
    6. sin()cos()tan()asin()acos()atan()
    7. round(double x): 该函数用于对double类型x进行四舍五入,返回类型也是double,需要进行取整。例如double x = round(3.4);printf("%d", (int)x);

    三、数组

    1. 一维数组初始化问题,如果是定义全局变量没有初始化,那么会默认初始化全为0,如果定义的是局部变量,没有初始化会随机初始,如果没有完全初始化,剩余部分初始化为0.
    2. 二维数组初始化问题,使用大括号进行初始化,如果没有初始化也会默认为0,中间如果跳过某一行初始化,也必须使用空大括号,不然编译不予通过。
    3. 如果数组大小较大(10^6级别),需要将其定义在主函数外面,否则会异常退出。
    4. memset(数组名, 值, sizeof(数组名)),需要带上头文件cstring和algorithm,同时建议赋值只赋0或-1,要是赋值其他会跟赋值对应不上,亲测。
    5. 字符数组初始化,方法同一般数组相同,可以在定义的时候直接进行字符串初始化,其他位置不允许直接赋值字符串。
    6. 字符数组的存放格式,是以结尾,其他数组不是,所以在定义字符数组时需要多开辟一个空间来存放它。

    string.h头文件

    1. strlen(字符数组), 可以得到第一个前的字符个数。
    2. strcmp(字符数组1, 字符数组2), 返回两个字符串大小比较结果,按字典序,如果等于返回0,数组1大于字符数组2返回一个正整数,否则返回一个负整数。
    3. strcpy(字符数组1, 字符数组2), 把字符数组2复制给字符数组1,这里的复制包括了结束符,相当于替代了,注意不是连接。
    4. strcat(字符数组1, 字符数组2), 把字符数组2接到字符数组1后面。
    5. sscanf(str, "%d", &n) and sprintf(str, "%d", n),理解一下,scanf是从str到n,printf是从n到str。

    四、函数传参、引用、指针、结构体

    1. 数组作为函数参数进行传参,参数中的一维数组不需要填写长度,如果是二维数组则需要填写长度,实际调用时也只需填写数组名,最重要的就是数组作为参数时,在函数中对数组元素的修改就等同于是对原数组元素的修改(这与普通的局部变量不一样)。不能作为返回类型出现,如果返回则使用这方法将想要返回的数组当参数传入,例子有两种书写格式,两者等价,结构体数组也一样:
    int a[10];
    格式1:
    void test(int *a){
        
    }
    格式2:
    void test(int a[]){
    
    }
    

    指针:
    int a = 10;
    int *p = &a;
    printf("%d %d", *p, a);
    输出结果一样

    1. 搞清楚&、*有啥区别
    2. 指针是一个unsigned类型的整数。
    3. 指针变量就是用来存储指针的可以理解为地址。
    4. 给指针变量赋值的方式一般是使用&取地址符把变量的地址取出然后赋值给指针。
    5. *可以理解成房间的一把钥匙,用于取出地址中存放的东西。
    6. 指针变量作为函数参数,这视为把变量地址传入函数,如果在函数中对这个地址中的元素进行修改,原生数据确实就会被修改了。一个经典例子交换数
    7. C++一个强有力的语法,引用,不产生副本,对引用变量的操作就是对原变量的操作。void change(int &a){}
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    codec功能简介
    dtmf原理说明
    linux的vm.overcommit_memory的内存分配参数详解
    Hibernate与Sleep的区别
    简单的读写-simple_read_from_buffer
    linux delay sleep
    Linux系统上的popen()库函数
    Linux中popen函数的作用小结
    ulimit 命令详解
    LTE Cat1有什么用?基于4G LTE打造cat1,弥补NB-IoT和5G的空缺
  • 原文地址:https://www.cnblogs.com/tsruixi/p/11870831.html
Copyright © 2020-2023  润新知