学习日志 姓名:张朋 日期:2018年07月23日
|
|
今日学习任务
|
|
今日任务完成情况
(详细说明本日任务是否按计划完成,开发的代码量) | 今日任务按计划完成。
|
今日开发中出现的问题汇总
|
|
今日未解决问题
| 无 |
今日开发收获 | 通过今天的学习,让我知道了什么是函数指针变量以及函数指针数组。明白了几个特殊关键字的不同的作用。掌握了几种复合数据类型(结构体、共用体、枚举),同时知道了他们三者的相同之处和不同之处。了解了什么是幻数以及如何避免幻数的出现。懂得了什么是大端字节序、小端字节序。明白了宏函数与自定义函数的区别。 |
自我评价
(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)
| 今天可以跟上老师的步骤,跟着老师的步伐复习和回顾了之前所讲的内容,感觉自己对有些知识点还是有些陌生,需要课下花些时间进行练习和背诵。同时,根据今天老师所讲的内容来看,有些比较难的知识点没有在课堂上完全掌握,这就要求自己在课后进行询问同学和老师。总的来说,还是需要自己花时间来搞懂今天没有听懂的知识点。 |
其他
| 无 |
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;
}