以结构体为参数的函数如何改变传入c语言结构体成员函数的值

欢迎加入我们,一同切磋技术 &
用户名: &&&
密 码: &
共有 5295 人关注过本帖
标题:怎样把结构体当函数参数?
等 级:论坛游民
帖 子:66
专家分:87
结帖率:62.5%
&&已结贴√
&&问题点数:20&&回复次数:6&&&
怎样把结构体当函数参数?
程序代码:#include &stdio.h&
#include &stdlib.h&
#include &time.h&
#define true 1
struct tm StartTime,EndT
void TimeingJudgment(struct tm);
void SetTimeing()
&&& int Startday = <font color=#;
&&& int Starthour = <font color=#;
&&& int Startmin = <font color=#;
&&& int Endday = <font color=#;
&&& int Endhour = <font color=#;
&&& int Endmin = <font color=#;
&&& printf(&please input start time \n&);
&&& scanf(&%d,%d,%d&,&Startday,&Starthour,&Startmin);
&&& StartTime.tm_mday =S
&&& StartTime.tm_hour =S
&&& StartTime.tm_min =S
&&& printf(&please input end time \n&);
&&& scanf(&%d,%d,%d&,&Endday,&Endhour,&Endmin);
&&& EndTime.tm_mday =E
&&& EndTime.tm_hour =E
&&& EndTime.tm_min =E
void PowerOff()
&&& printf(&Interval timing is not\n&);
&&& system(&pause&);
&&& int second = <font color=#; //临时参数,用来与当前时间比较
&&& SetTimeing();
&&&&&&&&while(true) //实现了每N秒钟执行一条语句的功能
&&&&&&&&time_t&&&time_now = time(<font color=#); //调用系统函数,并初始化
&&&&&&&&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();
&&&&&&&&&&&&
&&&&&&&&else if(StartTime.tm_mday == EndTime.tm_mday)//同一天
&&&&&&&&&&&&if(time_p-&tm_hour & StartTime.tm_hour || time_p-&tm_hour & EndTime.tm_hour)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& PowerOff();
&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&&&&&&&&&else if(StartTime.tm_hour == EndTime.tm_hour)//同一小时
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(time_p-&tm_min & StartTime.tm_min || time_p-&tm_min & EndTime.tm_min)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&PowerOff();
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
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();
&&&&&&&&&&&&}
我做了一个函数,会报错,不知道怎么用结构体当函数的参数?
搜索更多相关主题的帖子:
等 级:贵宾
威 望:304
帖 子:25793
专家分:48814
接收处用了指针,那么传递处就应用地址。
授人以渔,不授人以鱼。
等 级:蜘蛛侠
帖 子:229
专家分:1027
等 级:论坛游民
帖 子:66
专家分:87
这方面我不懂?写个例子看看
等 级:贵宾
威 望:304
帖 子:25793
专家分:48814
看书去。没学过取地址操作,就别学人写指针符号,老老实实地值传送。结构体尺寸不是太大太复杂的话,值传送足够了,也安全得多。
赶你去看书是为了让你培养一种良好的学习习惯,但愿我这回不是又当了吕洞宾,身边没铁拐李。
[ 本帖最后由 TonyDeng 于
20:38 编辑 ]
授人以渔,不授人以鱼。
等 级:论坛游民
帖 子:42
专家分:76
我给你看一个我以前写的一个简单的例子吧,是用栈来逆序输出数字的。总的有一个头文件,一个主函数的,一个是栈的操作函数的,代码如下:
#ifndef STACK_H_
#define STACK_H_
#define SIZE 10
//构造一个栈
typedef struct s
&&& int data[SIZE];&&&&&&&&
&&&&&&&&&&&//栈顶指针
void InitStack(Stack * S);
// 判断栈是否为空
bool StackIsEmpty(Stack * S);
void PushStack(Stack * S, int a);
int OutStack(Stack * S);
栈函数操作:
#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&);
&&&&&&&&S-&top = S-&top+1;
&&&&&&&&S-&data[S-&top] =
int OutStack(Stack * S)
&&&&&&&&return S-&data[S-&top--];
#include&stdio.h&
#include&stack.h&
int main(void)
&&& 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;
等 级:新手上路
版权所有,并保留所有权利。
Powered by , Processed in 0.087117 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved定义一个结构体变量,包括年月日,计算该日在本年中是第几天,尝试用函数及返回值的形式完成改程序
问题描述:
定义一个结构体变量,包括年月日,计算该日在本年中是第几天,尝试用函数及返回值的形式完成改程序#include"stdio.h"structdate{intyear,month,}intdays(date aday){inti,n=0;for(i=1;i
问题解答:
{n=days(aday);printf("Pleaseinput the day(XXX/XX/XX):\n");scanf("%d/%d/%d",&aday.year,&aday.month,&aday.day);printf("\nTheday is the %dth day.\n",n);n=days(aday);函数执行时,aday还没有赋值,这句应该放到scanf语句后面去.
我来回答:
剩余:2000字
#include #include typedef struct Point{double x,y;}Pvoid main(){Point p1,p2;double k,b;printf("输入点1的坐标:");scanf("%lf%lf",&p1.x,&p1.y);printf("输入点2的坐
C语言课程设计任务书 一、题目: 学生成绩管理 二、目的与要求 1. 目的: 代码的编写.定义数据结构和各个功能子函数. 4. 程序的功能调试. 5.
struct Goods{ char name[20]; char color[10];}struct Goods Coat={"DRESS","Blue",120};
选B 读的时候需要的是变量的地址 CD都是 A是字符串名 就是字符串的首地址
#include #include typedef struct STU{ char ID[20];//学号 char Name[20];//姓名//成绩1//成绩2//成绩3 };int main(){ STU myStu[10];
struct people{//名字//性别//年龄//号码//地址};
正确的是B,请查看谭浩强C语言第二版 294页关于 typedef 说明.Typedef struct S{}T;typedef 声明新的类型名,也就是定义一个新的数据类型.如果你看除去 typedef ,T就变成了声明一个结构体类型S:struct S{};
方便以后扩展.这个只是IPv4的协议族,IPV6好像就不支持了吧.就算IPV6还能用,以后还有IPV8,IPV10.每一个都在sockeaddr里面加一个不觉得很晕吗?所以定义一个结构体,不觉得逻辑更清晰吗?
#include struct node{ struct node *};int main(){ printf("struct node size = %d\n",sizeof(struct node)); printf("node size = %d\
struct stu{ long int N char name[20]; char gender[10]; char addr[100]; };void print_stu_mes(struct stu* pStu,int i){ printf("the %dth student's pers
#include struct date //定义结构体类型{};void main(){ //定义结构体变量int i,count, mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};printf("请输入日期(年 月
函数里定义的结构体是局部变量,在这个函数外是不能使用的.你要在函数外定义成全局变量.例,函数外:struct s{}s1,s2;这样的就定义了两个全局的结构体s1,s2,这两个结构体在所有函数中都可以使用,当然,使用它们的函数里,不能再定义相同名称的局部变量,否则使用的就是局部变量了. 再问: 额,那这个结
这个是指针的名字与成员没有直接关系.它就是一个名字而已.只不过用这个名字去声明的结构体变量全部都是指向该结构体的指针,并且声明的时候不需要加*而已.(通过变量访问的时候还是要用*的)一种声明的方法,方便程序里的处理,仅此而已. 再问: sturct a{ int a double b }emp_i *emp_i emp
A就是个变量名嘛,就跟你定义了一个int x一样.它的首地址要用&A取出来. 不要把它跟数组搞混了,一个数组,比如int b[10],这里的b实际是一个指向数组首地址的指针,即:b = &b[0] 再问: 那为什么这个可以运行。。。(真的可以运行。。。) struct student *head,*p; (前面已定义s
#includestruct complex{};complex operator - (complex a,complex b){sum.r = a.r - b.r;sum.i = a.i - b.i;return
不明白你说的名称是什么意思.对于变量来说,编译后都是类似于地址的一个编号,没有名称了.变量名只是在编程的时候一个使用方便的替代名称.
所有函数都能用,那就定义成全局变量.struct s{}mys[10]; 再问: 不仅所有函数都能用而且使得在一个函数使用时保存在里面的值在另一个函数中也能使用 再答: 对啊,全局变量就可以满足你这个需求啊。 所谓全局变量,就是定义在所有函数之外的变量,可以被任何函数引用或改变,并使的改变的值在
public class Score { p public float getMath(){ } public void setMath(float math){ this.ma
class Complex{public: Complex(double & r=0,double & i=0):real(r),imaginary(i) {} void OutPut(void) { cout =0) cout
也许感兴趣的知识向函数传递结构体变量_百度知道
向函数传递结构体变量
我想问一下向函数传递结构体变量时,传递的是实参结构体变量中各成员的值,函数中形参结构体变量的改变不会影响到实参结构体变量。为什么这个题函数fun传递的是结构体变量std,却可以...
我想问一下
向函数传递结构体变量时,传递的是实参结构体变量中各成员的值,函数中形参结构体变量的改变不会影响到实参结构体变量。为什么这个题函数fun传递的是结构体变量std,却可以返回调用函数中形参的值?题目: 程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。 #include
&stdio.h&typedef
struct { int
year,month,}
score[3];}STU;/**********found**********/void show(STU tt){
printf(&&#92;n%d %s %c %d-%d-%d&, tt.num, tt.name, tt.sex,
tt.birthday.year, tt.birthday.month, tt.birthday.day);
for(i=0; i&3; i++)/**********found**********/
printf(&%5.1f&, tt.score[i]);
printf(&&#92;n&);}main( ){
std={ 1,&Zhanghua&,&#39;M&#39;,,76.5,78.0,82.0 };
printf(&&#92;nA student data:&#92;n&);/**********found**********/
show(std);}
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
假装很帅哥知道合伙人
来自电脑网络类芝麻团
假装很帅哥
采纳数:168
获赞数:106
擅长:暂未定制
参与团队:
函数传进去是只是形参,不会改变原结构的你可以用指针,修改后的代码如下:#includestructbox{charmaker[40];};voidpass_by_value(box*a,box*b);  //参数改为结构指针intmain(){boxb1;cout&b1.cout&b1.cout&b1.cout&b1.cout&b1.boxb2={&#39;o&#39;,0,0,0,0};pass_by_value(&b1,&b2);      //调用函数时要用&取地址作为参数coutmaker,a-&maker);b-&height=a-&b-&width=a-&b-&volume=a-&}
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。如何给含有结构体参数的函数提供默认值
<a data-traceid="question_detail_above_text_l&&
如有如下结构:
int function(int a, A astruct);
那么如何给astruct提供默认值呢,谢谢你的关注与回答!
如果你真的要设置默认struct参数
这个方案如何:
static const A static_a = {1,2};
int funct(int i, A a=static_a)
printf(&%d %d \n&, a.a, a.b);
--- 共有 1 条评论 ---
谢谢你,结合你的帮助,我把参数列表中的结构体去掉了,改为分别传递结构体的变量,后在函数体中赋值,这样的话,参数列表变长了,不过功能还是可以实现的,谢谢你的热心帮助!
可以 写构造函数
提供构造函数
: a(0),b(0)
--- 共有 1 条评论 ---
谢谢你的热心回答,我现在的情况是结构体是别人定义好的,我只是拿来用的,他没有提供构造函数,我最好也不应该改动他的结构体吧,最后我提交的只是我写的,该怎么办?多谢!
那你把functioncan参数改为引用, 如果你是要传入 struct,function应该这样定义
int function(int a, const A& astruct);
然后这样调用
int a = 0;
memset(&a_struct, 0x0, sizeof(A));
function(a,a_struct);
--- 共有 1 条评论 ---
谢谢你啊,我要实现的是在函数声明的时候给函数的结构体参数提供一个默认值,如function(int a, A a_struct={1,2})类似这样的,但是直接这样写不行的,不知道怎么写正确。谢谢你再次热心的回答,谢谢!求教, 如何将一个自定义结构体的对象传入给一个参数为interface{}的函数,并给其赋值?
- Go语言中文网 - Golang中文社区
<meta name="author" content="polaris ">
求教, 如何将一个自定义结构体的对象传入给一个参数为interface{}的函数,并给其赋值?
· 378 次点击 ·
开始浏览& &
我之所以有这个想法是因为看到标准库里的 `func Unmarshal(data []byte, v interface{}) error` 是这样的,并且传入任意结构体实例的指针给v, 就能解出对应的值。
我的例子的playground
[https://play.golang.org/p/-WQQvSNqcJv](https://play.golang.org/p/-WQQvSNqcJv)
为什么我这个例子不可以呢?我有试着去看 `Unmarshal` 的原码,无奈有些看不懂,求大神们指教。
最好能把我的playground的修改一下,那么我看的就更清楚了。
378 次点击 &
10 回复 &| &直到
请尽量让自己的回复能够对别人有帮助
支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
支持 @ 本站用户;支持表情(输入 : 提示),见
图片支持拖拽、截图粘贴等方式上传
记住登录状态
1056 人在线
&最高记录 2928
& studygolang.com Go语言中文网,中国 Golang 社区,致力于构建完善的 Golang 中文社区,Go语言爱好者的学习家园。
Powered by
&o&·&CDN 采用
VERSION: V3.5.0&·&15.236628ms&·&为了更好的体验,本站推荐使用 Chrome 或 Firefox 浏览器
登录和大家一起探讨吧
记住登录状态
还不是会员}

我要回帖

更多关于 结构体成员为函数指针 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信