菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
242
0

第二次作业

原创
05/13 14:22
阅读数 43332

一、学习内容总结

指向指针的指针,可以这样理解,首先指向指针的指针可以把他看成一种特殊的变量,既然是变量就可以存储不同的元素,比如整形变量int a,a可以存储2,3,4这种普通的整型数据,只要将值付给a就行了,但指向指针的指针所存的元素比较特殊,存放的元素一般是存放地址的指针变量,比如我有三个指针变量,int *p1,*p2,*p3,那么我可以定义一个特殊的变量 int **p,我可以将p1的地址付给p,也可以将p2的地址付给p.比如p=&p1,那么p就代表了他所指向的变量p1或者p2的地址,而p所指向的变量是一个指针变量,*p代表着这个指针变量里面的值,**p代表着它所指向的指针变量的内容(地址)所指向的存储单元的内容

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

问题1:空指针异常

问题1的解决方案;计算号调用地址范围 防止指针指向错误地址

问题2:指针的地址赋值会搞错

问题2的解决方案:给指针复制时,如果是赋值整个数组则不用&符号 如果是单个地址则需要&符号

问题3 :出现了错误的括号导致了结果错误

问题2的解决方案:找到正确的括号对应处删除错误的括号

三、作业

1、

#include<stdio.h>
int main(){
  int a,i;
  char s[80],c;
  gets(s);
  c=getchar();
  for(i=0,a=0;s[i]!='\0';i++){
    if(s[i]==c){
      a++;
    }
  }
  printf("%d",a);
  return 0;
}

2、

#include<stdio.h>
#include<string.h>
int main(){
    char s[5][20],*t;
    int i,j;
    for(i=0;i<5;i++){
        gets(s[i]);
    }
    for(i=0;i<5;i++){
        for(j=i+1;j<5;j++){
        if(strcmp(s[i],s[j])>0){
        strcpy(t,s[i]);
        strcpy(s[i],s[j]);
        strcpy(s[j],t);
        }
    }
    }
    printf("-----------\n");
    for(i=0;i<5;i++){
        puts(s[i]);
    }
}

四、附加内容

发表评论

0/200
242 点赞
0 评论
收藏
为你推荐 换一批