zoukankan      html  css  js  c++  java
  • 第六次博客作业

    0.展示PTA

    1本章学习的内容

    1.1指针定义、指针相关运算、指针做函数参数

    • 指针定义
      (1)一般形式:类型名 *指针变量名;
      (2)定义指针变量要使用指针声明符;类型名指定指针变量所指向变量的类型,必须是有效的数据类型;指针变量名是指针变量的名称,必须是一个合法的标识符。
      定义多个指针变量时,每个变量前面都要加指针声明符
    • 指针相关运算
      (1)取地址运算
      单目运算符&用于给出变量的地址。
      指针类型和它所指变量的类型必须相同
      (2)间接访问运算
      *除了被用于定义指针变量外,还被用于访问指针所指向的变量。
      p指向a时,*pa访问同一个存储单元
      (3)赋值运算
      一旦指针被定义并赋值后,就可以如同其它类型变量一样进行赋值运算。
      只能将一个指针的值赋给另一个相同类型的指针
    • 指针作为函数的参数
      (1)调用函数不能改变实参变量的值,当指针变量作为函数参数时也遵循这个规则。
      (2)调用函数不能改变实参指针变量的值,但可以改变实参指针变量所指向变量的值。
      (3)将指针作为函数的参数能使函数返回多个值。

    1.2 字符指针

    • 指针指向字符串
      (1)如果定义一个字符指针接收字符串常量的值,该指针就指向字符串的首字符。
      (2)字符数组和字符指针都可以用来处理字符串。
      为了尽量避免引用未赋值的指针所造成的伤害,在定义指针时,可先将它的初值置为空,如char *s=NULL
    • 常用的字符串处理函数
      (1)字符串的输入输出
      函数scanf()和gets()可以用来输入字符串,printf()和puts()输出字符串。
      scanf()遇到回车和空格输入结束,并自动将输入的数据和字符串结束符''送入数组中。
      printf()输出遇到''结束。
      gets()从输入得到一个字符串,遇到会车结束,自动将输入输入的数据和''送入数组中,gets()输入时允许有空格。
      gets()有返回值,如果成功则返回值是字符串的首字符地址,否则返回NULL
      puts()输出时遇到''自动将其转换为' '。
      同样,puts()函数也有返回值,若失败则返回EOF
      (2)字符串的复制
      char *strcpy(char *s1,char *s2)
      该函数把字符串s2复制到s1,直到遇到s2中的''为止。
      s1要有足够的空间容纳s2,且s1的内容被覆盖,函数返回的是s1
      (3)字符串的连接
      strcat(s1,s2)
      该函数将s2接到字符串s1后面,此时,s1中原有的结束符''被放置在连接结束后的位置上。
      数组s1的长度要足够大
      (4)字符串的长度
      strlen(s1)可以计算字符串的有效字符个数(不包括'')。

    1.3指针做函数返回值

    指针被作为函数的返回值时可以返回多个值。
    指针函数可以返回字符串的首字符地址,从而返回多个值。

    1.4动态内存分配

    • 动态内存分配步骤
      (1)了解需要多少内存空间。
      (2)利用C语言提供的动态分配函数来分配所需要的存储空间。
      (3) 使指针指向获得的内存空间,以便于指针在该空间内实施运算和操作。
      (4) 当使用完毕内存后,释放这一空间。
    • 动态内存分配函数
      (1)动态内存分配函数malloc()
      功能: 在内存的动态存储区中分配一连续空间,其长度为size。若申请成功则返回指向所分配内存空间的起始地址的指针,我申请内存空间不成功则返回NULL。
      调用malloc时,应该利用sizeof计算存储块大小,不要直接写数值。
      (2)计数动态存储分配函数calloc()
      功能: 在内存的动态存储区中分配n个连续空间, 每一存储空间的长度为size并且分配后还把存储块里全部初始化为零,如果申请成功就返回一个指向被分配内存空间的起始地址的指针,若申请内存不成功则返回NULL。
      (3)动态存储释放函数free()
      原型:void free (void *ptr)
      功能: 释放由动态存储分配函数申请到的整块内存空间,ptr为指向要释放空间的首地址,如果ptr的值是空指针,则free什么都不做。该函数没有返回值。
      (4)分配调整函数 realloc()
      原型:void *realloc(void *ptr,unsigned size)
      功能:更改以前的存储分配。

    1.5二级指针

    (1)A(即B的地址)是指向指针的指针,称为二级指针,用于存放二级指针的变量称为二级指针变量。
    (2)首先任何值都有地址 ,一级指针的值虽然是地址,但这个地址做为一个值亦需要空间来存放,是空间就具有地址 ,这就是存放地址这一值的空间所具有的地址,二级指针就是为了获取这个地址。

    1.6行指针、列指针

    • 行指针
      形式:```int(*p)(n)
      含义:p为指向含有n个元素的一维数组的指针变量。
      行指针可以和数组名互换使用。
    • 小结
      列指针:表示离a[0][0]的第n个位置的元素;
      行指针:表示第n行的首地址。

    2.PTA实验作业

    2.1藏尾诗

    • 伪代码
    定义字符型数组a[30];
    for(诗的四行)
    {
    输入一行诗gets;
    输出最后一个字;
    }
    
    • 代码截图

    • 代码比较
      同学新建了一个字符数组,我的代码是输入每一行诗的同时输出最后一个字。

    2.2

    • 伪代码
      ···
      for(0到m+n-1)
      {
      将a数组和b数组的值按照先后的顺序赋值给c
      }
      用选择排序法将c排序;
      for()
      {
      将c的值依次赋值给a;
      }
      ···

    • 代码截图

    • 代码比较

      我的代码看似行得通,实则不行;
      同学代码灵活运用了malloc函数;

    2.3

    • 伪代码
    for(从最后开始)
    {
    for{
    从最后开始往回找‘ ’;
    }
    for{
    向后输出字符;
    }.
    }
    
    • 代码截图
  • 相关阅读:
    python 获取当前路径
    python 执行结果输出为txt
    python def 定义函数
    python:浅析python 中__name__ = ‘__main__’ 的作用
    python 数组新增或删除元素
    python在Windows安装PIL的方法
    静态路由学习总结
    zookeeper客户端命令行操作
    kudu安装过程中可能出现的问题
    sudo: /etc/sudoers is world writable|给用户添加权限报错
  • 原文地址:https://www.cnblogs.com/05dgx/p/14198041.html
Copyright © 2011-2022 走看看