美文网首页十天学会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