学习日志 姓名: 日期:2018.7.23
|
|
今日学习任务
| 1、 熟练掌握所有关键字的使用;(static、extern、typedef) 2、 熟练掌握复合数据类型的使用;(struct、union、enum) 3、 熟练掌握宏的使用技巧;(宏的技巧及红函数的定义) |
今日任务完成情况
(详细说明本日任务是否按计划完成,开发的代码量) | 任务基本完成。代码见附件 |
今日开发中出现的问题汇总
| 宏函数和函数的区别: 1.宏做的是简单的字符串的替换,而函数是参数的传递,参数是有数据类型的。 2.宏的参数替换是直接替换的,不经任何计算,而函数调用时将形参的值传给形参。 3.宏在编译之前进行(先用宏体替换宏名,再进行编译),而函数是在编译之后执行时才调用的。 4.宏的参数是不占内存空间的,因为只做字符串的替换,而函数调用时参数之间的传递,所以占用内存。 5.函数调用需要空间开销,因为在函数调用时它既要保存现场又要跳转到另一个函数调用中去执行,然后还要返回现场,但宏函数中就不存在。 |
今日未解决问题
| 无 |
今日开发收获 | 1、register:寄存器变量。 作用:请求编译器尽可能将变量保存在cpu的内部寄存器,从而省去了cpu从内存中抓取数据的时间,提高了执行效率。 2、static:修饰局部变量的作用:使变量的生命周期延长至整个程序执行完后再释放;修饰全局变量时,使全局变量只能在本文件访问,不能在其他文件访问;修饰函数时,使这个函数只能在本文件被调用,不能在其他文件调用。 3、const修饰一个变量,这个变量为只读变量,不能通过变量名修改这个空间的值,但这个空间时可变的。 |
自我评价
(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)
| 完成既定任务, |
其他
| 无 |
1 #include <stdio.h>
2
3 struct messaga
4 {
5 int num;
6 char ch;
7 };
8 typedef struct message Message;
9
10 int main()
11 {
12 Message msg;
13 Message *p = &msg;
14
15 msg.num = 1;
16 msg.ch = 'a';
17 p->num = 2;
18
19
20 printf("msg.num = %d msg.ch = %s\n ",msg.num,msg.ch);
21 printf("p = %d\n",p->num);
22
23 return 0;
24 }
1 #include <stdio.h>
2
3 struct node
4 {
5 char ch1;
6 char ch2;
7 int num;
8 };
9
10 typedef struct node Node;
11
12 int main()
13 {
14 Node p;
15 printf("sizeof(p) = %d\n",sizeof(p));
16
17
18 return 0;
19 }
1 #include <stdio.h>
2
3 union node
4 {
5 int num;
6 char ch[2];
7 };
8 int main()
9 {
10 union node p;
11
12 p.num = 0;
13 p.ch[0] = 0;
14 p.ch[1] = 1;
15
16 printf("p.num = %d\n",p.num);
17 return 0;
18 }
1 #include <stdio.h>
2
3 union node
4 {
5 int num;
6 char ch;
7 };
8
9 int main()
10 {
11 union node p;
12
13 p.num = 0x12345678;
14
15 if(p.ch == 0x78)
16 {
17 printf("litter!\n");
18 }
19 if(p.ch == 0x12)
20 {
21 printf("big!\n");
22 }
23 return 0;
24
25 }
1 #include <stdio.h>
2
3 int add(int a,int b)
4 {
5 return a + b;
6 }
7 int sub(int a,int b)
8 {
9 return a - b;
10 }
11 int mul(int a,int b)
12 {
13 return a * b;
14 }
15
16 int div(int a,int b)
17 {
18 return a / b;
19 }
20 int cal(int a,int b,int (*p_cal)(int,int))
21 {
22 return p_cal(a,b);
23 }
24
25 int main()
26 {
27 cal(5,6,add);
28 cal(5,6,sub);
29 cal(5,6,mul);
30 cal(5,6,div);
31 int i;
32 int (*p_cal_array[4])(int,int);
33 p_cal_array[0] = add;
34 p_cal_array[1] = sub;
35 p_cal_array[2] = mul;
36 p_cal_array[3] = div;
37
38 for(i = 0;i < 4;i ++)
39 {
40 printf("(p_cal_array[%d])(5,6) = %d\n",i,(p_cal_array[i])(5,6));
41 }
42 int sum = (p_cal_array[1])(5,6);
43 printf("sum = %d\n",sum);
44 return 0 ;
45 }