zoukankan      html  css  js  c++  java
  • C语言指针

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业05--指针
    这个作业的目标 学习指针相关内容
    姓名 郑俊佳

    0.展示PTA总分(0----2)

    展示关于“指针题目集”分数截图。

    1.本章学习总结(3分)

    整理指针主要知识点,必须包含内容有:

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

    每个知识点具体展开介绍。

    1.1.1指针定义

    ·类型 *变量名;
    ·eg:int *p;
    *只有变量名前带有‘ 星号’才说明其为指针变量 *
    ·eg:

    int *p, *s;         //ture
    int  *p,s;==int a;int  *p;         //error
    

    *在前面已经定义过的指针变量,使用时不能再加‘ 星号’ *
    ·eg:

    int  *p,a; *p=&a;       //error
    int  *p,a;p=&a;          //ture
    

    **变量定义类型不一致,无法取地址 **
    **相同类型的指针变量可以相互赋值 **
    ·eg:int *p, *t,a;p=&a;t=p; //p与t,皆指向a;

    1.1.2指针相关运算

    char  *p;
    int i=1;
    p=&i;
    p++;//指i的地址加一
    ( *p)++;//指i的值加一
    

    ·p+t;//一个指针变量加or减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。这样就保证了p+t指向p下面的第t个元素。

    指针变量相减:
    如果两个指针变量指向同一个数组的元素,则两个指针变量之差是两个指针之间的元素个数。
    **指针变量相加无实际意义 **

    指针变量比较:
    如果两个指针变量指向同一个数组的元素,则可以进行比较。指向前面元素的指针变量小于指向后面元素的指针变量。

    1.2 字符指针

    包括指针如何指向字符串、字符串相关函数及函数代码原型的理解、字符串相关函数用法(扩展课堂未介绍内容)

    指向字符串

    char *p="Hello World!";

    字符串相关函数及函数代码原型

    ·字符串输入函数:

    函数 格式 功能
    gets() gets(字符数组) 从键盘输入一以回车结束的字符串放入字符数组中, 并自动加''
    scanf() scanf("%s", 字符数组) 从键盘输入一以空格或回车结束的字符串放入字符数 组中,并自动加''

    ·字符串输出函数:

    函数 格式 功能
    puts() puts(字符串地址) 向显示器输出字符串(输出完,换行)
    printf() printf("%s", 字符串地址) 依次输出字符串中的每个字符直到遇到字符''(''不会被输出)

    ·字符串常用函数:

    函数 格式 功能
    strlen() strlen(字符串地址) 计算字符串长度,返回字符串实际长度,不包括''在内
    strcpy () strcpy (字符数组1,字符串2) 将字符串2拷贝到字符数组1中去,返回字符数组1的首地址
    strncpy () strncpy (字符数组1, 字符串2, 长度n) 将字符串1前n个字符的子串与字符串2前n个字符的子串进行比较
    strcmp () strcmp (字符串1, 字符串2) 比较两个字符串,对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或''为止
    stricmp() stricmp(字符串1, 字符串2) 同strcmp,stricmp在比较两个字符串时不区分大小写,而strcmp则区分大小写
    strncmp () strncmp (字符串1, 字符串2, 长度n) 将字符串1前n个字符的子串与字符串2前n个字符的子串进行比较
    • ·扩展: * strstr(str1,str2)
    • ·str1: 被查找目标 string expression to search.
    • ·str2: 要查找对象 The string expression to find.
    • ·返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

    1.3 指针做函数返回值

    具体格式是什么,注意事项。

    1.4 动态内存分配

    为什么要动态内存分配,堆区和栈区区别。动态内存分配相关函数及用法。举例为多个字符串做动态内存要如何分配。

    1.5 指针数组及其应用

    多个字符串用二维数组表示和用指针数组表示区别?

    1.6 二级指针

    • ·指针可以指向一份普通类型的数据,例如 int、double、char 等,也可以指向一份指针类型的数据,例如 int *、double *、char * 等。
    • ·如果一个指针指向的是另外一个指针,我们就称它为二级指针,或者指向指针的指针。
    ·eg:int a =100;
    int  *p1 = &a;
    int  * *p2 = &p1;
    

    ·指针变量也是一种变量,也会占用存储空间,也可以使用&获取它的地址。C语言不限制指针的级数,每增加一级指针,在定义指针变量时就得增加一个’星号‘。p1 是一级指针,指向普通类型的数据,定义时有一个 ’星号‘;p2 是二级指针,指向一级指针 p1,定义时有两个 ‘星号’

    1.7 行指针、列指针

    行指针:指向某一行,不指向具体的元素。
    列指针:指向行中具体的元素。

    列指针只要在同一行,不管它们指向行中的哪个元素,它们的行地址都是在同一行的地址,所以它们的行地址都是一样的。

    &列指针->行指针:

    *行指针->列指针:

    ·对于元素a[1][2],其地址用列指针表示为a[1]+2,等价表示为 *(a+1)+2,那么内容是 *( *(a+1)+2)

    对于数组a[3][4],可以这样声明(并初始化)行指针:
    int ( *ptr)[4]=a;
    //注意行指针是一行中所有元素所共有的,所以应该等于列数

    声明和初始化列指针时,要注意“ 星号”如:

    int  *ptr= *a;//true
    int  *ptr=a; //error
    

    2.PTA实验作业(7分)

    2.1 字符串反正序连接(2分)

    选择一题难度较大的题目。请认真写伪代码整理解题思路。自己代码和同学代码比较,说明各自代码特点。

    2.1.1 伪代码

    用代码渲染符号```渲染伪代码。注意:伪代码不是翻译代码,必须是代码+中文文字描述。
    数据处理可以用C语言符号介绍。具体参考看课件!!!

    2.1.2 代码截图

    贴图展示代码,不要复制。

    2.1.3 找一份同学代码(尽量找思路和自己差距较大同学代码)比较,说明各自代码特点。

    2.2 合并两个有序数组(2分)

    选择合并2个有序数组这题介绍做法。

    2.2.1 伪代码

    2.2.2 代码截图

    2.2.3 找一份同学代码(尽量找思路和自己差距较大同学代码)比较,说明各自代码特点。

    展示同学代码,介绍做法具体区别。

    2.3 说反话-加强版(3分)

    选择说反话-加强版这题介绍字符指针操作如何操作字符串。并说明和超星视频做法区别。

    2.3.1 伪代码

    2.3.2 代码截图

    2.3.3 请说明和超星视频做法区别,各自优缺点。

  • 相关阅读:
    windows用户管理与远程管理
    Linux之基础网络配置
    linux之程序包管理
    linux之特殊权限
    设计模式学习笔记——Prototype原型模式
    设计模式学习笔记——Visitor 访问者模式
    XXX is not a function
    终于决定要开始写自己的博客了,先Mark一下
    element ui 与vue跨域通信操作 和框架语法,contentype
    跨域与版本控制
  • 原文地址:https://www.cnblogs.com/jioky/p/14199224.html
Copyright © 2011-2022 走看看