zoukankan      html  css  js  c++  java
  • 第三次作业

    一、学习内容:1.2.2动态内存的分配、1.3.1单字符输入输出、1.3.2字符串数组、1.4

    1.观看视频:1.2.2,1.3.1,1.3.2,1.4

    2.代码列表

    3.手写笔记

     

     

     

     

     4.问题

      问题:a[][]二维数组

       解决:二维数组是一维数组的数组,对二维数组a来说,它的元素a[1]就是下标为1的一行数据,是个一维数组,而a[1]作为这个一维数组的名字,其实就是指向数组第一个元素的指针,即这一行的首地址。a[1]+1即a[1][1]的地址,因此*(a[1]+1)即间接访问a[1][1]。

      问题:malloc

       解决:malloc分配的内存大小至少为size参数所指定的字节数。当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以通过类型转换强制转换为任何其它类型的指针。以上为视频和百度得知,都还不太明白。

       问题:size_t strlen(const char *s)中为什么有const

      解决:观看视频。因为要保证函数不会修改字符串。

       问题:比较两个字符串不可以直接用指针比较的原因

     解决:观看视频。两个数组直接相互比较的是他们的地址,因此不可能相同。

       问题:函数strcpy为什么要返回dst

     解决:观看视频。需要让strcpy的结果能够再次参与其他运算。

       问题:malloc (strlen(src)+1)中的+1是什么意思

     解决:观看视频。复制时,地址所存内容的长度是不包含结尾的‘ ’,所以要+1。

       问题:字符串搜索函数中,char *ctrchr(const char *s,int h);寻找字符串hello中的' h ',为什么结果是' llo '

     解决:观看视频。函数最后返回了一个指向‘ l ’的指针,从‘ l ’开始把后面的内容当作一个字符串输出了。

    二、PTA作业

    问题:是什么

    解决:上网搜索得知。''是ASCII码表中的第0个字符,称为空字符。该字符既不能显示,也不是控制字符,输出该字符不会有任何效果,它在C语言中仅作为字符串的结束标志。

    问题:

    解决:str是该数组的数组名字,而且str还是该数组的首地址,但str是一个指针常量,它是不能被赋值的也不能进行自增自减的。

    问题:

     解决:网上搜索。puts()和gets()是针对字符串的输出和读入,相对应的是printf和scanf是对单个字符的操作。

     课堂补充:

    1.组的方式定义字符串,所有的数据放在数据区,而指针的方式定义字符串则在代码区。数据区和代码区的区别:代码区整个运行过程不可改变,数据区可改变。

    2.字符数组与字符指针的重要区别:

    char sa[]="array";  char *sp=="array";

    sp指向的字符不可改变,而sa中的字符可改变。sp可指向别的字符串,sa是数组首元素地址,是常量,无法指向别的字符串。

    修改sa的方法:sa[0]='A',修改单个字符,还有strcpy(sa,"hello")

    3.字符串的输入和输出 :

    输入字符串:scanf()或gets()

    输出字符串:printf()或puts()

  • 相关阅读:
    Django创建超级用户出现错误
    如何创建单例设计模式
    运行Spark-shell,解决Unable to load native-hadoop library for your platform
    在linux上安装spark详细步骤
    Spark源码编译,官网学习
    linux安装httpd,做文件服务器
    在linux上安装Scala详细步骤
    hadoop运行wordcount实例,hdfs简单操作
    hadoop-2.6.0源码编译问题汇总
    hadoop-2.6.0源码编译
  • 原文地址:https://www.cnblogs.com/g-dragon-c/p/12498965.html
Copyright © 2011-2022 走看看