• 第2次作业


    一、学习内容总结

    通过指针的学习,我懂得了指针是C语言的核心,和我们以前学习的内容都能联系起来,不容易理解,指针特别抽象,下面是我对开学一个月来指针学习的总结:

     1.指针与地址

    ①在计算机中,内存是以字节为单位的连续存储空间,每一个字节都有一个编号,这个编号称为地址。

    ②系统为变量分配内存单元地址,地址是一个无符号的整型数。

    ③对变量值的存取操作都是通过地址进行的,直接按变量的地址存取变量值的方式称为直接存储方式。通过变量a得到变量b的地址,然后再存取变量b的值的方式称为

    间接存取方式。

    ④一个变量所占字节中的第一个字节的地址,称为这个变量的地址。

    2.指针和指针变量

    实例1.指针变量定义与赋值

    在本程序中定义了指针变量,并为指针变量赋值。*p表示取指针变量p所指向的内容。

    另外在此程序中,一定要有  “p=&i,q=&j”否则,指针变量在为存储确定地址时,值是不确定的不能使用,会造成系统崩溃。

    实例二.指针变量的应用,输入两个数并交换它们的值。

    通过这个实例我了解到,之前学的问题还可以用指针解决。

    3.指针的运算

    指针变量和普通的变量一样可以进行多种运算,对指针变量可以进行赋值运算、取地址运算、取内容运算、加减算术运算、关系运算。

    ①&和*运算

    二、在课堂或编程学习遇到的问题及解决办法

    问题一:不懂得指针的算术运算问题(不知道*x+2怎么运算)?

    解决方法:在上课的过程中及时问郭志康同学,他告诉我,*x是指向x地址中的值,而*x+2则是他后面数两位地址中的值。

    问题二:不明白p=&a[];是什么鬼?

    解决方法:通过查阅参考书知道,数组名代表数组的首地址,也就是第一个元素a[0]的地址,更直白的说现在就是把a[0]的值赋给了p;

    问题三:在学习指向字符串的指针的时候,不明白for(";*p!='';i++)是什么意思?

    解决办法:请教我们班C语言大神曹琪,在内存中,字符串的最后被自动加入了一个'',用来标识字符串的结束。

    三、作业

    1.PTA作业

     1 #include<stdio.h>
     2 int main()
     3 {
     4         char str[80],a;
     5         int k=0,i,count=0;
     6         while((str[k]=getchar())!='
    ')
     7              k++;
     8          scanf("%c",&a);
     9          for(i=0;i<=k;i++)
    10          {
    11         if(str[i]==a)     
    12              count++;
    13          } 
    14          printf("%d",count);
    15      return 0;
    16 }

    2.以二维数组形式对5个字符串进行排序

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<string.h>
     4 int main()
     5 {
     6     int n,i,j;
     7     char **str;
     8     char s[100];
     9     printf("请输入n:");
    10     scanf("%d",&n);
    11     getchar();
    12     str=(char**)malloc(sizeof(char*)*n);
    13     for(i=0;i<n;i++)
    14     {
    15         str[i]=(char*)malloc(sizeof(char)*100);
    16         printf("请输入第%d个字符串
    ",i+1);
    17         gets(str[i]);
    18     }
    19     puts("排序后的字符串为:");
    20     for(i=0;i<n;i++)
    21     {
    22         for(j=i;j<n-1;j++)
    23         {
    24             if(strcmp(str[j+1],str[j])<0)
    25             {
    26                 strcpy(s,str[j+1]);
    27                 strcpy(str[j+1],str[j]);
    28                 strcpy(str[j],s);
    29             }
    30         }
    31     }
    32     for(i=0;i<n;i++)
    33     {
    34         puts(str[i]);
    35     }
    36     for(i=0;i<n;i++)
    37     {
    38         free(str[i]);
    39         str[i]=NULL;
    40     }
    41     free(str);
    42     str=NULL;
    43     return 0;
    44 }

     

    四、附加内容

    注册中国大学Mooc

     

    观看浙江大学的程序设计入门——C语言

  • 相关阅读:
    谈谈ios内存管理--持续更新
    IOS整体框架介绍
    OC-精简解读 block
    解读自定义UICollectionViewLayout--感动了我自己
    内存管理-深浅拷贝之 copy和mutableCopy
    OC-socket使用介绍
    ios 调用系统打电话和发消息的功能
    Swift-扩展
    Java 之switch语句
    Java 键盘输入数据
  • 原文地址:https://www.cnblogs.com/1999-09-22/p/8734418.html
Copyright © 2020-2023  润新知