• 第三次作业


    一、学习内容: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()

  • 相关阅读:
    什么是webview
    juqery.fn.extend和jquery.extend
    LeetCode
    5. Longest Palindromic Substring
    42. Trapping Rain Water
    11. Container With Most Water
    621. Task Scheduler
    49. Group Anagrams
    739. Daily Temperatures
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/g-dragon-c/p/12498965.html
Copyright © 2020-2023  润新知