苏嵌//张朋//2018.07.23

苏嵌                                                                                                                                   项目实战

学习日志                                       姓名:张朋                       日期:2018年07月23日

 

 

 

 

今日学习任务

 

  1. 回顾了前几天的学习内容(主要包括什么是指针、为什么提出指针这种类型、多维指针的作用、什么是野指针、如何避免野指针、函数的三要素、传值和传地址的区别、数组的相关知识等)
  2. 学习了什么是函数指针以及定义方式和使用方式。
  3. 学习了什么是函数指针数组、怎么使用、了解了什么情况下用函数指针数组。
  4. 讲了几个关键字(register、static、extern、const、typedef)的作用。
  5. 学习了几个复合数据类型(结构体、共用体(联合体)、枚举)
  6. 了解并掌握什么是内存空洞。
  7. 掌握几种基本语句的用法(switch、break、continue、goto语句)等。

今日任务完成情况

 

(详细说明本日任务是否按计划完成,开发的代码量)

今日任务按计划完成。

  1. 掌握了什么是函数指针、什么是函数指针数组。
  2. 掌握了几个关键字的作用(register、static、extern、const、typedef)
  3. 对结构体、共用体、枚举有了比较全面的认识。
  4. 懂得了什么是内存空洞、什么是幻数等有关知识点。

今日开发中出现的问题汇总

 

  1. typedef和define的区别?
  2. 如何修改编译器的对齐方式?
  3. 怎么避免幻数?
  4. 宏函数与自定义函数那个效率更高?(两者哪个更好?)
  5. continue和break的区别?

 

今日未解决问题

 

今日开发收获

通过今天的学习,让我知道了什么是函数指针变量以及函数指针数组。明白了几个特殊关键字的不同的作用。掌握了几种复合数据类型(结构体、共用体、枚举),同时知道了他们三者的相同之处和不同之处。了解了什么是幻数以及如何避免幻数的出现。懂得了什么是大端字节序、小端字节序。明白了宏函数与自定义函数的区别。

 

自我评价

 

(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)

 

 

今天可以跟上老师的步骤,跟着老师的步伐复习和回顾了之前所讲的内容,感觉自己对有些知识点还是有些陌生,需要课下花些时间进行练习和背诵。同时,根据今天老师所讲的内容来看,有些比较难的知识点没有在课堂上完全掌握,这就要求自己在课后进行询问同学和老师。总的来说,还是需要自己花时间来搞懂今天没有听懂的知识点。

其他

 

 

 

1.结构体的相关代码(课堂上练习题)源代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct student
{
    int num;
    char name;
    char *str;
    char arr[100];
};
typedef struct student Student;

int main()
{
    Student stu1;
    Student *stu2;
    
    stu2 = &stu1;
    #if 1
    stu1.str = (char *)malloc(sizeof(char) * 50);
    stu1.str = "hello world!!!!!";
  
    printf("stu1.str = %s\n",stu1.str);
    #endif
    strcpy(stu2->arr,"hello woeld!!");
    printf("stu2->arr = %s\n",stu2->arr);
    printf("stu1.arr = %s\n",stu1.arr);
    stu1.num = 12;
    stu1.name ='a';
    printf("stu1.num = %d stu1.name = %c\n",stu1.num,stu1.name);

    stu2->num = 23;
    stu2->name = 'c';

    printf("stu2->num = %d stu2->name = %c\n",stu2->num,stu2->name);
    

    return 0;
}

2.带有static关键字的代码(课堂练习题)

#include <stdio.h>

int count = 6;
int func()
{
   static int num = 5;
    num++;
    printf("num = %d\n",num);
}
int main()
{
//    static int num = 5;
    func();
    func();
    func();

    print1();
    return 0;
}

extern count;
static void print()
{
    printf("count = %d\n",count);
}
void print1()
{
    print();
}

4.关于求结构体字长的代码。

#include <stdio.h>

struct student
{
    char name;
    char sex;
    int b2;
    short a1;
    int num;
 //   char sex;
};

typedef struct student Student;
int main()
{
    Student stu1;

    printf("sizeof(stu1) = %d\n",sizeof(stu1));
   
    return 0;
}

5.带有函数指针和函数指针数组以及回调函数的相关练习。

#include <stdio.h>

int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int mul(int a ,int b)
{
    return a * b;
}
int div (int a, int b)
{
    return a / b;
}
int cal(int a, int b,int(*p_cal)(int, int))
{
    return p_cal(a, b);
}
int main()
{
    int i;
    int sum;
    int (*p_cal_array[4])(int,int);
    
    cal(6,5,add);
    cal(6,5,sub);
    cal(6,5,mul);
    cal(6,5,div);

    printf("add = %d\n",cal(6,5,add));
    printf("sub = %d\n",cal(6,5,sub));
    printf("mul = %d\n",cal(6,5,mul));
    printf("div = %d\n",cal(6,5,div));

    
    p_cal_array[0] = add;
    p_cal_array[1] = sub;
    p_cal_array[2] = mul;
    p_cal_array[3] = div;

    for(i = 0; i < 4; i++)
    {
        (p_cal_array[i])(6,5);
    }
    for(i = 0; i < 4; i++)
    {
        printf("p_cal_array[%d] = %d\n",i,(p_cal_array[i])(6,5));
    }

    
    return 0;
}

6.共用体的相关练习。

#include <stdio.h>

union node
{
    int num;
    char ch[2];
};

int main()
{
    union node p;
    union node *pp = &p;
    
    int num1 = 0x12345678;
    char *ptr = &num1;

    printf("ptr = %x\n",*ptr);//confirm little or big model,78---little,12---big

    p.num = 0;
    p.ch[0] = 0;
    p.ch[1] = 1;

    printf("sizeof(union node) = %d\n",sizeof(union node));
    printf("num = %d\n",p.num);
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
污水池清扫机器人是一种可以在污水池内进行清洁作业的机器人设备,它可以有效地降低人工清洁的风险,提高清洁效率,因此得到了广泛的关注和研究。目前,国内外对污水池清扫机器人的研究主要集中在机器人的设计与控制、环境感知与导航、清扫机构与清扫效果等方面。 在机器人的设计与控制方面,研究者们主要关注机器人的整体结构设计、运动控制与稳定性、能量供应与管理等问题。例如,美国康奈尔大学的研究团队提出了一种基于智能材料的污水池清扫机器人设计方案[1],该机器人利用智能材料的形变来实现机器人的运动控制和稳定性保证。另外,国内的一些高校如浙江大学、华南理工大学等也对机器人的运动控制、能量供应等问题进行了深入的研究[2][3]。 在环境感知与导航方面,研究者们主要关注机器人对污水池内环境的感知与建模、路径规划与导航等问题。例如,美国加州大学伯克利分校的研究团队提出了一种基于激光扫描和视觉识别的污水池清扫机器人导航系统[4],该系统可以实现对污水池内物体的三维重建和识别,进而实现机器人的路径规划和导航。同时,国内的一些高校如清华大学、南京航空航天大学等也对机器人的环境感知和导航问题进行了研究[5][6]。 在清扫机构与清扫效果方面,研究者们主要关注机器人清扫机构的设计、清扫效率与清扫效果等问题。例如,美国乔治华盛顿大学的研究团队提出了一种基于高效清洗技术的污水池清扫机器人[7],该机器人采用高压水流清洗技术,可以有效地清洗污水池内的污垢和污染物。同时,国内的一些高校如东南大学、中南大学等也对机器人的清扫机构和清扫效果进行了研究[8][9]。 综上所述,目前对污水池清扫机器人的研究主要集中在机器人的设计与控制、环境感知与导航、清扫机构与清扫效果等方面。未来,随着人工智能、机器视觉等技术的发展,污水池清扫机器人将会得到更广泛的应用和研究。 参考文献: [1] Zhang, Q., & Wang, Q. (2016). A soft robot for sewage cleaning based on smart material. In 2016 IEEE International Conference on Robotics and Biomimetics (ROBIO) (pp. 1631-1636). IEEE. [2] 王富强, 沈蒙, 张波, & 杨坤. (2018). 污水池清洁机器人的设计与研究. 机械设计与制造, (7), 1-4. [3] 彭刚, 王鑫, 谭波, & 王浩. (2019). 基于智能电池的污水池清洁机器人设计. 微电机, 52(4), 14-17. [4] Liu, T., & Tomizuka, M. (2015). An integrated navigation system for a sewer cleaning robot. Journal of Field Robotics, 32(2), 257-273. [5] 李志伟, & 于光辉. (2017). 基于激光雷达的污水管道清洁机器人导航研究. 机器人, 39(6), 820-827. [6] 樊嘉琳, 张金峰, & 岳文. (2017). 基于SLAM的污水管道清洁机器人自主导航研究. 自动化学报, 43(7), 1229-1238. [7] Wu, J., & Gupta, S. (2014). A high-efficiency cleaning robot for sewage tanks. Journal of Field Robotics, 31(2), 271-288. [8] 严晓东, & 肖章华. (2017). 基于差速驱动的污水池清扫机器人设计. 机械设计与制造, (12), 22-25. [9] 张朋, 刘伟, & 程红飞. (2019). 一种新型污水池清扫机器人的设计. 机械与电子, (2), 89-90.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值