苏嵌//张福辉//2018.7.23

苏嵌                                                                                                                                            项目实战

学习日志                                          姓名:    张福辉                    日期:2018.7.23

 

 

 

 

今日学习任务

 

1.函数指针

2.函数指针数组

3.关键字

4.结构体、共用体、枚举

今日任务完成情况

 

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

按要求完成任务

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

 

1.如何修改编译器的对齐方式

2.typedef和和宏定义谁更好

3.宏函数和自定义函数的区别

 

今日未解决问题

 

今日开发收获

1.对函数指针和函数指针数组有了深入了解,知道了回调函数的定义

2.对几个关键字有了深入了解,知道了它们的区别

3.知道了结构体在定义时由于对其方式产生的内存空洞是怎么回事

4.知道了结构体、共用体、枚举的区别,还有宏和typedef的区别

 

自我评价

 

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

 

 

按规定完成任务

其他

 

#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 sum1 = cal(5, 6, add);
    int sum2 = cal(5, 6, sub);
    int sum3 = cal(5, 6, mul);
    int sum4 = cal(5, 6, div);

    printf("sum1 = %d\n", sum1);
    printf("sum2 = %d\n", sum2);
    printf("sum3 = %d\n", sum3);
    printf("sum4 = %d\n", sum4);

    int (*p_cal_array[4])(int, int);

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

    int i;

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

    return 0;
}
/************************************/
#include <stdio.h>

int count = 6;

void func()
{
    static int num1 = 5;
    
    num1++;

    printf("num1 = %d\n", num1);
}

int main()
{
    int num = 5;

    printf("num = %d\n", num);

    func();
    func();
    func();

    print();

    return 0;
}
/**********************************/
extern int count;
void print()
{
    printf("count = %d\n", count);
}
/***********************************/
#include <stdio.h>
#include <string.h>

struct message
{
    int num;
    char ch;
    char str[100];
};

typedef struct message Message;

int main()
{
    Message msg;
    Message *p = &msg;
 
    printf("sizeof(msg) = %d\n", sizeof(msg));
    #if 0
    msg.num = 1;
    printf("num = %d\n", msg.num);
    p->num = 2;
    printf("num = %d\n", p->num);

    msg.ch = 'a';
    printf("ch = %c\n", msg.ch);
    p->ch = 'b';
    printf("ch = %c\n", p->ch);

    strcpy(msg.str, "hello world");
    printf("str = %s\n", msg.str);
    strcpy(p->str, "HELLO WORLD");
    printf("str = %s\n", p->str);
    #endif
    return 0;
}
/********************************/
#include <stdio.h>

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

int main()
{
    union node u;
    u.num = 0x12345678;

    printf("num = %x\n", u.num);
    printf("ch = %x\n", u.ch1);

    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值