美文网首页十天学会C语言
第08天C语言(00):笔记总结

第08天C语言(00):笔记总结

作者: liyuhong | 来源:发表于2017-07-16 08:03 被阅读23次
    01-二维数组-基本概念
     二维数组 : 数组中的每一个元素又是一个数组,那么这个数组就称之为二位数组
    
      元素类型 数组名称[一维数组的个数][每个一维数组的元素个数];
    
      元素类型 数组名称[行数][列数];
    
      
    
      元素类型 : 说明二维数组中 每个一维数组存储什么类型的数据
    
      一维数组的个数: 说明二维数组 有多少个元素
    
      每个一维数组的元素个数: 说明 二维数组中 每一个一维数组的元素个数
    
    02-二维数组-注意点
       1.定义的同时初始化
    
       2. 先定义再初始化
    
       3.完全初始化
    
       4.不完全初始化
    
       5.省略元素个数的写法
    
      
    
       6.错误写法
    
       注意点 : 每个一维数组的元素个数 不能省略
    
    03-二维数组和函数
     以后 只要看到函数的参数 是一个数组,那么就是地址传递
    
      在函数中修改形参的值 会影响实参
    
    04-字符串-基本概念
     用双引号 引起来的就是字符串
    
      字符串 是由什么组成的? 字符"串", 羊肉"串"
    
    05-字符串-常用方法1
     /*
    
      printf函数
    
         弊端 : 如果想要换行, 必须加上\n
    
         优点 : 可以自定义格式化 需要输出的字符串,也就是 可以按照我们需要的格式输出
    
      puts函数
    
          优点 : 可以自动换行
    
          缺点 : 不可以自定义格式,只能原样输出
    
      
    
      scanf函数
    
       1.利用scanf接收字符串的注意点
    
       scanf接收字符串, 会以空格, tab, 回车作为结束符号, 也就是说利用scanf接收字符串时,字符串中不能出现空格,tab,回车
    
      
    
      gets函数
    
          warning: this program uses gets(), which is unsafe.
    
          如果是用gets接收字符串,系统会提示 我们正在使用一个不安全的方法接收字符
    
          优点 : 如果利用gets接收字符串,可以在字符串输入空格,tab
    
      strlen函数
    
         strlen的原理 : 从传入的地址 开始 逐个取出字符串, 每取出一个 让计算器+1, 知道遇到\0位置
    
         计算字符串的个数(不包含\0)
    
         自己写一个strlen函数
    
      
    
          //  自定义strlen函数
    
          int myStrlen(char str[])
    
          {
    
                 int count = 0;
    
             while (str[count] != '\0') {
    
                 count++;
    
             }
    
             return count;
    
          }
    
      
    
      */
    
    06-字符串-常用方法2
     #include <string.h>
    
      1.字符串拼接
    
         原理 : 首先遍历第一个字符串,知道遇到\0,然后取出第二个字符串中的字符,从\0的位置开始添加
    
      
    
         strcat函数 strcat(dest, src) --- 将src中的数据 拼接到dest后面
    
           注意 : 要想使用字符串的拼接 函数,那么dest必须是一个数组,并且数组的长度 必须大于拼接之后的长度 (str必须足够长)
    
           如果dest的数组的长度,不能完全 存放dest+scr+\0 那么就会报错
    
         strncat函数 strncat(dest, src, len) ---  char * 相当于 dest chost char * 相当于 scr size_t 需要拼接的个数
    
      
    
      2.字符串拷贝
    
         strcpy函数 strcpy(dest, src) --- char * 目标 , const char * 源
    
          strcpy函数会将 源的数据拷贝到目标中, 并且会覆盖目标中原有的数据
    
           目标的容器必须 能够存放 拷贝的数据,如果容器 不够就会报错
    
              strcpy(str1, str2);
    
      
    
         strncpy函数 strncpy(dest, src, len)
    
             拷贝操作 是逐个替换, 拷贝了几个 就替换几个
    
             str1 能够存放元素的个数 - \0
    
      
    
      3.字符串比较
    
         strcmp的原理 : 取出字符串中的每一个字符 进行逐个比较, 如果发现不相等 就不会继续往下 比较
    
         如果该值 等于0, 那么证明 两个字符串相等
    
         如果该值 小于0, 那么证明 str 小于 str2
    
         如果该值 大于0, 那么证明 str 大于 str2
    
    07-字符串-练习
     1.编写一个函数 char_contains(char str[],char key),如果字符串str中包含字符串key 则返回数值1,否则返回数值0(while 和 for循环实现)
    
    08-字符串数组
     如果想存储一堆字符串 那么可以使用字符串数组
    
     说白了 字符串数组 就是二维数组
    
    09-指针-基本概念
     如何定义指针变量
    
          普通变量
    
          数据类型 变量名称;
    
          指针变量
    
          数据类型 * 变量名称;
    
          数据类型 : 说明 将来指针变量能够保存 什么类型的变量的地址
    
          注意 : 指针变量是什么类型 : 那么将来就只能保存什么类型的变量的地址
    
          例如 : 指针变量是int, 那么将来就只能保存 int类型变量的地址
    
          * : 没有任何特殊含义, 仅仅是为了标识 这是一个指针变量
    
          变量名称 : 用于区分不同的变量
    
      
    
          int num; // 普通变量     num = 10;
    
          int * p; // 指针 , 在64位的编译器下 占用8个字节
    
          p = # // 将num的地址 存储到p这个地址中
    
          (重点 : p = &num --- *p == num)
    
    10-指针-练习1
     #pragma 1.定义一个函数交换两个变量的值
    
     void swap(int *v1,int *v2)
    
     {
    
         int temp = *v1;
    
         *v1 = *v2;
    
         *v2 = temp;
    
     }
    
    11-指针-练习2
     #pragma 1.要求定义一个函数,传递三个值,返回这三个值和,差,平均值
    
     int demo(int v1,int v2,int v3,int *p1,int *p2);
    
    12-指针-注意点
     1.指针只能用于保存地址
    
      2.同一个变量可以有有多个指针 指向他
    
      3.指针的指向可以修改
    
      4.不要访问野指针
    
         错误写法
    
         int *p;  // EXC BAD ACCESS ✅正确写法 int *p = NULL; // 0
    
         printf("%i\n",*p);
    
      5.指针类型 是什么类型,就只能指向什么类型的数据
    
         错误写法
    
             double doubleValue = 0.55;
    
             int *p = &doubleValue; (打印0.00) ✅正确写法需要把int 修改成 double
    
    13-多级指针
     /*
    
      char c = 'a';
    
      char *cp;
    
      cp = &c;
    
      char **cpp;
    
      cpp = &cp;
    
      
    
      *cp == c
    
      *cpp == cp;
    
      **cpp == *(*cpp) == *cp == c
    
      
    
      多级指针的操作,最简单的方式,就是通过几颗星来存储,就通过几个星来访问
    
      还有一种方式 就是画图,看图片中有几个箭头,就用几颗星来访问
    
      */
    
    14-指针为什么要分类型
     指针为什么要分类型?
    
     因为当我们利用指针 去取值的时候, 系统就会自动根据指针的类型来确定 应该去多少个字节中的值
    

    相关文章

      网友评论

        本文标题:第08天C语言(00):笔记总结

        本文链接:https://www.haomeiwen.com/subject/gahtkxtx.html