| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5347 人关注过本帖
标题:怎样把结构体当函数参数?
只看楼主 加入收藏
hwf214685147
Rank: 2
等 级:论坛游民
帖 子:70
专家分:94
注 册:2011-9-14
结帖率:62.5%
收藏
已结贴  问题点数:20 回复次数:6 
怎样把结构体当函数参数?
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define true 1

struct tm StartTime,EndTime;

void TimeingJudgment(struct tm);

void SetTimeing()
{
    int Startday = 1;
    int Starthour = 0;
    int Startmin = 0;

    int Endday = 1;
    int Endhour = 0;
    int Endmin = 0;


    printf("please input start time \n");
    scanf("%d,%d,%d",&Startday,&Starthour,&Startmin);
    StartTime.tm_mday =Startday;
    StartTime.tm_hour =Starthour;
    StartTime.tm_min =Startmin;

    printf("please input end time \n");
    scanf("%d,%d,%d",&Endday,&Endhour,&Endmin);
    EndTime.tm_mday =Endday;
    EndTime.tm_hour =Endhour;
    EndTime.tm_min =Endmin;

}
void PowerOff()
{
    printf("Interval timing is not\n");
    system("pause");

}

main()
{
    
    int second = 0; //临时参数,用来与当前时间比较
    SetTimeing();
        while(true) //实现了每N秒钟执行一条语句的功能 
    {
        time_t   time_now = time(0); //调用系统函数,并初始化 
        struct   tm *time_p = localtime(&time_now);//gmtime(&time_now); //获取当前时间 

        TimeingJudgment(time_p);
/*
        if(time_p->tm_mday < StartTime.tm_mday || time_p->tm_mday > EndTime.tm_mday)
        {
            PowerOff();
            return;
        }
        else if(StartTime.tm_mday == EndTime.tm_mday)//同一天
        {
            if(time_p->tm_hour < StartTime.tm_hour || time_p->tm_hour > EndTime.tm_hour)
            {
                PowerOff();
                return;
            }
            else if(StartTime.tm_hour == EndTime.tm_hour)//同一小时
            {
                if(time_p->tm_min < StartTime.tm_min || time_p->tm_min > EndTime.tm_min)
                {
                    PowerOff();
                    return;
                }
            }
        }
*/
    }
    
}


void TimeingJudgment(tm *time_Local)
{
    if(time_Local->tm_mday < StartTime.tm_mday || time_Local->tm_mday > EndTime.tm_mday)
    {
        PowerOff();
    }
    else if(StartTime.tm_mday == EndTime.tm_mday)//同一天
    {
        if(time_Local->tm_hour < StartTime.tm_hour || time_Local->tm_hour > EndTime.tm_hour)
        {
            PowerOff();
        }
        else if(StartTime.tm_hour == EndTime.tm_hour)//同一小时
        {
            if(time_Local->tm_min < StartTime.tm_min || time_Local->tm_min > EndTime.tm_min)
            {
                PowerOff();
            }
        }

    }


}


我做了一个函数,会报错,不知道怎么用结构体当函数的参数?
搜索更多相关主题的帖子: 结构体 
2011-12-08 18:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
接收处用了指针,那么传递处就应用地址。

授人以渔,不授人以鱼。
2011-12-08 18:29
编程的乐趣
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:229
专家分:1027
注 册:2011-4-4
收藏
得分:5 
2011-12-08 18:31
hwf214685147
Rank: 2
等 级:论坛游民
帖 子:70
专家分:94
注 册:2011-9-14
收藏
得分:0 
这方面我不懂?写个例子看看
2011-12-08 20:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
看书去。没学过取地址操作,就别学人写指针符号,老老实实地值传送。结构体尺寸不是太大太复杂的话,值传送足够了,也安全得多。
赶你去看书是为了让你培养一种良好的学习习惯,但愿我这回不是又当了吕洞宾,身边没铁拐李。

[ 本帖最后由 TonyDeng 于 2011-12-8 20:38 编辑 ]

授人以渔,不授人以鱼。
2011-12-08 20:31
zjslwyp
Rank: 2
等 级:论坛游民
帖 子:42
专家分:76
注 册:2011-3-24
收藏
得分:5 
我给你看一个我以前写的一个简单的例子吧,是用栈来逆序输出数字的。总的有一个头文件,一个主函数的,一个是栈的操作函数的,代码如下:
头文件:
#ifndef STACK_H_
#define STACK_H_
#define SIZE 10

//构造一个栈
typedef struct s
{
    int data[SIZE];        
    int top;        //栈顶指针
} Stack;

Stack S;

//置空栈
void InitStack(Stack * S);

// 判断栈是否为空
bool StackIsEmpty(Stack * S);

//进入栈
void PushStack(Stack * S, int a);

//出栈
int OutStack(Stack * S);


#endif

栈函数操作:

#include<stdio.h>
#include"stack.h"

//置空栈
void InitStack(Stack * S)
{
    S->top = -1;
}

// 判断栈是否为空
bool StackIsEmpty(Stack * S)
{
    return (S->top == -1);
}

//进入栈
void PushStack(Stack * S, int a)
{
    if (S->top == SIZE-1)
        printf("栈已经满了,请输入一个字母退出。\n");
    else
    {   
        S->top = S->top+1;
        S->data[S->top] = a;
    }
}

//出栈
int OutStack(Stack * S)
{
        return S->data[S->top--];
}
主函数:
#include<stdio.h>
#include"stack.h"
int main(void)
{
    int input;
    int n;
    if (!StackIsEmpty(&S))                //判断栈是否为空
        InitStack(&S);                    //若不为空,则置空栈

    printf("请输入一个整数:");
    while(scanf("%d",&input) == 1 )
    {
        PushStack(&S,input);                //将数据写入栈
        printf("请继续输入一个整数(输入字母退出):");
    }

    printf("逆转后的数据为:\n");
    while(!StackIsEmpty(&S))
        printf("%d ",OutStack(&S));
    printf("\n");

    return 0;
}
2011-12-08 22:52
wangyu354747
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2011-12-8
收藏
得分:5 
不知道
2011-12-08 22:54
快速回复:怎样把结构体当函数参数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.071256 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved