第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语言

原文地址:https://www.cnblogs.com/1999-09-22/p/8734418.html