桃花飞舞 发表于 2018-4-4 12:21:38

一个C问题

总是想着用计算机来运行程序,自己看不出来结果,虽然答案出来了但是还是不理解,谁指点下?

BngThea 发表于 2018-4-4 12:32:14

问题本身在哪里

风过无痕丶 发表于 2018-4-4 12:35:54

首要你要知道这个程序的运行流程~
其次你要知道这个程序每个语句的功能~
最后~试数~用电脑运行的思路来模拟出运行的结果~

桃花飞舞 发表于 2018-4-4 23:05:23

风过无痕丶 发表于 2018-4-4 12:35
首要你要知道这个程序的运行流程~
其次你要知道这个程序每个语句的功能~
最后~试数~用电脑运行的思路来模 ...

程序流程应该知道,就是程序每条语句的功能,不能每个都搞懂,最后就迷糊了。但是放到编译器里,关键字的颜色突出时 ,能很快搞懂流程大概,如果在纸上就不行了。这是为什?

桃花飞舞 发表于 2018-4-4 23:07:03

BngThea 发表于 2018-4-4 12:32
问题本身在哪里

代码么?
#include <stdio.h>
#define TEST_MODE
#define POWER_OFF
typedef unsigned intUINT32;
typedef void(*pfpSATATE)(UINT32 msg,UINT32 param);
typedef enum{
        APP_STATE_NULL                        =0x0,
        APP_STATE_POWER_ON                =0x1,
        APP_STATE_POWER_OFF                =0x2,
}appState_e;
typedef struct appState_s{
        pfpSATATE                pfpState;
        char *name;
}appState_t;
typedef struct appStateInfo_s{
        appState_eprevState;
        appState_eactiveState;
        appState_enextState;
        UINT32 oaram;
}appStateInfo_t;
static appStateInfo_t stAppStateInfo =
{
        APP_STATE_NULL,/* previous state*/
        APP_STATE_POWER_OFF,/*active state*/
        APP_STATE_NULL,/*next state*/
        {0,0}
};        /*state param*/
static pfpSATATE pActiveState=NULL;
static int number=0;
void appNullState(UINT32 msg, UINT32 param)
{
        number=msg+param;
}
void appPowerOnState(UINT32 msg, UINT32 param)
{
        number=msg%param;
}
void appPowerOffState(UINT32 msg,UINT32 param)
{
        number=msg/param;
}
static appState_t        appStateTb1[]=
{
        {appNullState,"Null"},
        {appPowerOnState,"Pwr On"},
        {appPowerOffState,"Pwr Off"},
};
int main(int argc,char* argv[])
{
//        appFindJPGHead();
#if(defined TEST_MODE&&defined POWER_OFF)
        pActiveState=appStateTb1.pfpState;
        pActiveState(10,5);
        printf("number=%d\n",number);
#else
        pActiveState=appStateTb1.pfpState;
        pActiveState(15,5);
        printf("number=%d\n",number);
#endif
        return 0;
}

代号3 发表于 2018-4-14 17:07:47

放到纸上的建议不要直接写源代码了 为什么不考虑用伪代码来写 简单明了易于梳理 源代码在编译平台写有优势在纸上些伪代码也有优势

桃花飞舞 发表于 2018-4-14 21:28:01

本帖最后由 桃花飞舞 于 2018-4-14 21:30 编辑

代号3 发表于 2018-4-14 17:07
放到纸上的建议不要直接写源代码了 为什么不考虑用伪代码来写 简单明了易于梳理 源代码在编译平台写有优势 ...

伪代码我之前没接触过!还有我现在结构体,链表,队列,内存池,这些都不会,有没什么好的建议啊!如果学了C++再来学这些,我时间上不允许啊,现在我看不见曙光

理想小青年 发表于 2018-4-14 21:36:08

这些都只是一种思想 按照你的意愿去完成任务 如你所愿的代码 队列也好 内存池也好 因为你需要他们 他们才会出现

代号3 发表于 2018-4-15 19:49:16

桃花飞舞 发表于 2018-4-14 21:28
伪代码我之前没接触过!还有我现在结构体,链表,队列,内存池,这些都不会,有没什么好的建议啊!如果 ...

天生不会c吧 也是接触感兴趣好学才学的啊
页: [1]
查看完整版本: 一个C问题