一:函数
        - 定义:函数就是程序中独立的功能
        - 格式1:无返回值

        void 函数名(形参列表){
             函数体;
          }

         //函数调用
          函数名(实参列表);


        - 格式2:有返回值

          返回值类型 函数名(形参列表){
             函数体;
             return 返回值;
          }

         //函数调用
          返回值类型 变量 = 函数名(实参列表);


        - c语言中常见的函数官网可查询:http://zh.cppreference.com


二:C语言中常见的数学函数
        - 引入文件头 `#include<math.h>`
        - 求绝对值:
              1. int abs (int n);        //注意这个函数包含在` #include<stdlib.h> `文件里
              2. double fabs (double n); //传入参数double/int类型,返回值是double类型
              3. float fabs(float n);
              4. long double fabsl (long double n);


        - 求两者中最大值:
               1. double fmax(double x,double y); //传入参数double/int类型,返回值是double类型
               2. float fmaxf(float x,float y);
               3. long double fmaxl(long double x,long double y);

        - 向上取整:
               1. double ceil(double x); //传入参数double/int类型,返回值是double类型
               2. float ceilf(float x);
               3. long double ceill(long double x);

         - 向下取整:
               1. double floor(double x); //传入参数double/int类型,返回值是double类型
               2. float floorf(float x);
               3. long double floorl(long double x);

        - 求两者中最小值:fmin/fminf/fminl
        - 返回x的自然对数:double log(double n);  //基数为e的对数
        - 返回x的自然对数:double log10(double n);  //基数为10的对数
        - 返回x的y次幂:double pow(double x,double y);  
        - 返回x的平方根:double sqrt(double x);
        - 返回x除以y的余数:double fmod(double x,double y);



三:时间函数
        - 引入头文件:#include<time.h>
        - time(); //获取当前时间
        - 形参:表示获取的时间是否需要在其它地方进行存储,一般来讲,不需要在其他地方进行存储,所有一般传NULL即可
        - 返回值类型:long long
        - //返回值说明:从1970年0点0分0秒到现在的秒值



四:生成随机数函数
        - 步骤:
            1. 引入头文件:`#include<stdlib.h>`
            2. 使用srand设置种子:`srand(1);`
            3. 使用rand获取随机数:`int num = rand();//没有形参`

        - 说明:
           1. 种子不变,随机数的结果就是固定的,如果想随机变化,就可以让时间充当种子,即 `srand(time(NULL));`
           2. 默认随机数范围:0 ~ 32767
           3. 修改a ~ b随机数范围技巧:`rand()%(b+1-a) + a;`



五:内存
        - 即:软件在运行时,用来临时存储数据的,点击保存后,才会存储到硬盘中
        - 内存地址:操作系统为了更好地管理内存里的数据,会把内存以字节为单位进行划分为好多小格子,其中一个字节管理一个内存地址
        - 内存地址的规则:
            1. 32位操作系统,内存地址以32位的二进制表示,即一共有2^32次方,大概42亿多个不同的地址 --> 4GB内存
            2. 64位操作系统,内存地址以64位的二进制表示,即最大内存地址为2^64次方,地址范围:0~2^64,最大支持的内存:2^64(字节) --> 17,592,186(GB) --> 17,179(TB)
        - 变量的内存地址:
            在电脑中以十六进制形式存储第一个字节的位置
            获取方式:&变量名
               int a = 10;
               printf("%p\n",&a); //0000004FE98B9FB14



六:数组
        - 定义:是一种容器,可以用来存储同种数据类型的多个值
        - 数组的内存地址:是第一个元素的第一个字节空间的地址,也是首地址
        - 初始化:
              数据类型 数组名[长度] = {值1,值2,…};

           * 如果长度省略不写,那数据值的个数就是数组长度
           * 如果写了长度,那么所存数据值个数应该 <= 数组长度,未赋值的部分有默认值
           *   整数:0
           *   小数:0.0
           *   字符:'\0'
           * 字符串:NULL
        
        - 数组的长度:总长度/数组类型占用的字节个数   
        - 索引从0开始,从内存的角度来说,索引其实是“偏移量”,偏移首地址的几个单位/字节,一个单位一个字节
        - 最小索引:0
        - 最大索引:长度 - 1
        - 获取数组元素:`数组名[索引]`  
        - 修改数组元素:`数组名[索引] = 值;`
        - 数组作为函数的参数时,要注意:
            1. 数组作为函数的参数时,实际上传递的是数组的首地址,只是一个变量
               * 所以,如果要在函数中对数组进行遍历的话,记得一定要把数组的长度一起传递过去
            2. 数组定义处(`int arr[] = {1,6};`),数组名表示的就是完整的数组

           void printArr(int arr[],int len){
             for(int i = 0; i < len; i++){
                printf("%d\n",arr[i]);
             }
           }

           int arr[] = {1,2,8,9,6};
           int len = sizeof(arr)/sizeof(arr[0]);
          // int len = sizeof(arr)/sizeof(arr[0]);
           printArr(arr);


        - 遍历数组时,循环不一定要从0开始,如果先定义好了max值是索引是为0的值,那么循环可以从1开始,提高运行效率


        - 另外,定义的初始最大值不能是0,一定得是数组中已经存在得值(怕数组存的值都是负数,但最后运行得出的最大值是0),一般都是把0索引当作最大值
           <上一章:C语言复习2:键盘录入,字符串变量定义,流程控制语句https://blog.csdn.net/2301_76781059/article/details/145969358?fromshare=blogdetail&sharetype=blogdetail&sharerId=145969358&sharerefer=PC&sharesource=2301_76781059&sharefrom=from_link>下一章:C语言复习4:有关数组的基础常见算法https://blog.csdn.net/2301_76781059/article/details/145969759?fromshare=blogdetail&sharetype=blogdetail&sharerId=145969759&sharerefer=PC&sharesource=2301_76781059&sharefrom=from_link


       

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐