c语言中,如何在结构体中实现函数的功能? c语言中如何用子函数调用结构体中的变量实现数据的输入与输出。

C\u8bed\u8a00\u5728\u4e00\u4e2a\u51fd\u6570\u91cc\u9762\u5b9a\u4e49\u4e86\u4e00\u4e2a\u7ed3\u6784\u4f53,\u600e\u4e48\u5728\u53e6\u5916\u4e00\u4e2a\u51fd\u6570\u91cc\u9762\u4f7f\u7528?

\u51fd\u6570\u91cc\u5b9a\u4e49\u7684\u7ed3\u6784\u4f53\u662f\u5c40\u90e8\u53d8\u91cf\uff0c\u5728\u8fd9\u4e2a\u51fd\u6570\u5916\u662f\u4e0d\u80fd\u4f7f\u7528\u7684\u3002
\u4f60\u8981\u5728\u51fd\u6570\u5916\u5b9a\u4e49\u6210\u5168\u5c40\u53d8\u91cf\u3002
\u4f8b\uff0c\u51fd\u6570\u5916\uff1a
struct
s{
int
a;
}s1,s2;
\u8fd9\u6837\u7684\u5c31\u5b9a\u4e49\u4e86\u4e24\u4e2a\u5168\u5c40\u7684\u7ed3\u6784\u4f53s1,s2\uff0c\u8fd9\u4e24\u4e2a\u7ed3\u6784\u4f53\u5728\u6240\u6709\u51fd\u6570\u4e2d\u90fd\u53ef\u4ee5\u4f7f\u7528\uff0c\u5f53\u7136\uff0c\u4f7f\u7528\u5b83\u4eec\u7684\u51fd\u6570\u91cc\uff0c\u4e0d\u80fd\u518d\u5b9a\u4e49\u76f8\u540c\u540d\u79f0\u7684\u5c40\u90e8\u53d8\u91cf\uff0c\u5426\u5219\u4f7f\u7528\u7684\u5c31\u662f\u5c40\u90e8\u53d8\u91cf\u4e86\u3002

\u7528\u5b50\u51fd\u6570\u5b9e\u73b0\u7ed3\u6784\u4f53\u6570\u636e\u7684\u8f93\u5165\u4e0e\u8f93\u51fa\uff1a\u5bf9\u4e8e\u591a\u6570\u5b50\u51fd\u6570\u7684\u8f93\u5165\u4e0e\u8f93\u51fa\uff0c\u6709\u4e00\u5b9a\u89c4\u5f8b\u6027\u53ef\u8a00\u3002
\u65b9\u6cd51\uff1avoid\u578b\u4e0d\u4f20\u503c\u4f20\u5740\u8c03\u7528\u4e0e\u58f0\u660e\u3002main\u4e2d\u58f0\u660evoid date_in()\uff0cvoid date_pout()\u3002\u51fd\u6570\u5b9a\u4e49\u524d\u4e00\u5b9a\u5728main()\u524d\u5148\u5b9a\u4e49\u7ed3\u6784\u4f53\u53d8\u91cf(\u5168\u5c40\u53d8\u91cf)\uff0c\u7136\u540e\u5b9a\u4e49\u8f93\u5165\u6216\u8f93\u51fa\u7a0b\u5e8f\u6bb5\u3002\u6b64\u65f6\u518dmain()\u8c03\u7528\u5373\u53ef\u3002
\u5982\u4e0b\uff1a
struct student
{
char name[20];
int old;
char sex;
}stu;
void date_in();
void main()
{ date_in();
}
void date_in()
{ scanf("%s%d/c,"stu.name,stu.old,stu.sex);
}\u65f6\u95f4\u95ee\u9898\u7a0b\u5e8f\u6709\u70b9\u7b80\u6d01\uff0c\u6709\u95ee\u9898\u8bf7\u8ffd\u95ee\uff0c\u5f88\u4e50\u610f\u4e0e\u4f60\u5206\u4eab\u3002

c语言的结构体是一组数据的组合,并不是简单的单一类型。所以在查找和输出的时候,均不能直接操作,而是要进行变通。
1
查找。
对于以某一项为关键字进行查找时,比如在结构体中有int型的成员a,要查找a为100的结构体变量,这时需要遍历每个结构体(数组、链表、或者其它任意形式),对每个元素的成员a值进行比较,符合的则表示查找成功。
对于结构体中元素较多,同时要对整个结构体每个元素都匹配才算查找到的特殊情况,可以使用memcmp的方式,整体进行比较,以减少代码量。不过这种情况较为少见,不过多描述。
2
输出。
对于结构体的输出,其实就是对其每一项,或者若干项成员变量的输出。
所以可以使用基本的输出函数,对每一项单独输出,输出中为了方便阅读,可以加一些说明文字。
如果对结构体输出有多处调用的需求,可以在将该功能封装为函数,供各个需要的函数调用。这样的好处是,当结构体的成员出现变化,或者结构体输出要求更改时,修改一处代码即可完成所有的输出修改,实现易于维护的效果。

提供参考:
struct
{
int
funcid;
char
*funcname;
int
(*funcint)();
/*
函数指针
int
类型*/
void
(*funcvoid)();
/*
函数指针
void类型*/
};
把结构体做成和类相似,让他的内部有属性,也有方法
每次都需要初始化,比较麻烦

  • c璇█涓庢牱璁蹭竴涓嚱鏁扮殑杩斿洖鍊煎瓨鍏ヤ竴涓缁撴瀯浣撲腑?
    绛旓細鍐欎釜绀轰緥绋嬪簭渚涗綘鍙傝冨惂锛歩nclude <stdio.h> typedef struct Node{ char name[12];int age;}NODE;NODE input(){ NODE n={0};scanf("%s%d",n.name,&n.age);return n;} int main(){ NODE node = input();printf("name:%s\n age:%d\n",node.name,node.age);return 0;} ...
  • 缁撴瀯浣鍙互鍦鍑芥暟鍐呴儴瀹氫箟鍚?C璇█
    绛旓細鍙互銆俰nt main(int argc,char** argv){ struct { int x;int y;} abc;abc.x = 235;return 0;}
  • C璇█涓鐨勫嚱鏁,褰㈠弬涓缁撴瀯浣,瑕鎬庢牱澹版槑
    绛旓細struct a{};void part_1(struct a &dir){}
  • c璇█ 瀹氫箟缁撴瀯浣绫诲瀷,鍒嗗埆缂栧啓鍑芥暟瀹炵幇澶嶆暟鐨勫姞銆佸噺杩愮畻,鍦涓诲嚱鏁颁腑璋...
    绛旓細c->re=a.re-b.re; c->im=a.im-b.im;}int main() { struct complex x,y,s,p; scanf("%d%d",&x.re,&x.im); scanf("%d%d",&y.re,&y.im); add(x,y,&s); printf(" sum=%5d+%5di\n",s.re,s.im); minus(...
  • C璇█缁撴瀯浣鍑芥暟鐨勮繑鍥炲兼槸缁撴瀯浣撶粨鏋勪綋鍙橀噺涓殑淇℃伅
    绛旓細浣犺鐨勮繖绉嶆儏鍐碉紝鍑芥暟杩斿洖鐨勬槸鏁翠釜缁撴瀯浣擄紝鏃犺杩欎釜缁撴瀯浣撲腑鍖呭惈浜嗗灏戜釜鎴愬憳锛屼竴涓粨鏋勪綋灏卞彧鏄竴涓彉閲忥紙缁撴瀯浣撴湰韬氨鏄竴涓彉閲忥紝鏃犺瀹冨寘鍚簡澶氬皯涓垚鍛橈級銆傝繖鏍凤紝鍑芥暟杩斿洖涓涓粨鏋勪綋灏辨剰鍛崇潃鍑芥暟鎶婄粨鏋勪綋涓墍鏈夌殑鎴愬憳閮借繑鍥炰簡銆C璇█鍑鏁扮殑纭彧鑳芥湁涓涓繑鍥炲硷紝鐢ㄨ繑鍥炵粨鏋勪綋鐨勬柟寮忓氨寰堝ソ鍦拌В鍐充簡...
  • C璇█缁撴瀯浣撴庝箞鍦涓涓嚱鏁颁腑璧嬪煎悗琚彟澶栧嚱鏁拌皟鐢ㄨ繘琛岃緭鍑.涓嬮潰浠g爜...
    绛旓細璇曡瘯鏀规垚杩欐牱 include <stdio.h> struct Student { char name[100];char sex[2];float result;};// 褰曞叆瀛︾敓淇℃伅鍑芥暟 void InputStudent(struct Student * pst, int len){ printf ("绗%d浣嶅鐢熶俊鎭:\n", i+1);printf ("鍚嶅瓧: "); scanf ("%s", pst->name);printf ("鎬у埆: ");...
  • C璇█涓浣鎶缁撴瀯浣鍙橀噺瀹氫箟鍦ㄤ富鍑芥暟鍐,鍐嶈皟鐢ㄤ竴涓嚜瀹氫箟杈撳叆鍑芥暟鍜岃緭...
    绛旓細鍙互鍦ㄥ閮ㄥ畾涔缁撴瀯浣绫诲瀷锛岀劧鍚庡湪涓诲嚱鏁板唴閮ㄥ畾涔夎绫诲瀷鐨勫彉閲忋傚湪杈撳叆杈撳嚭鍑芥暟璋冪敤鏃讹紝浠ョ粨鏋勪綋鍙橀噺鎸囬拡鍋氫负鍙傛暟浼犻掋傚弬鑰冧唬鐮佸涓嬶細include <stdio.h>struct test{ int a;};//瀹氫箟缁撴瀯浣撶被鍨媠truct test銆倂oid input(struct test* p)//杈撳叆鍑芥暟锛屼互鎸囬拡浣滀负鍙傛暟銆倇 scanf("%d",&p->a);}...
  • C璇█涓庝箞缁欎竴涓缁撴瀯浣鐢╯canf杩涜璧嬪?
    绛旓細缁撴瀯浣鏁扮粍鎸囬拡浣滀负鍑芥暟鍙傛暟锛岄氳繃鏁扮粍鐨勯鍦板潃涓庡亸绉婚噺瀵圭粨鏋勪綋鏁扮粍杩涜scanf鐨勮祴鍊硷紝鍦ㄥ嚱鏁颁腑閫氳繃鎸囬拡闂存帴璁块棶鍒板叾鎸囧悜鐨勫唴瀛樸備妇渚嬶細缂栧啓鍑芥暟锛岃緭鍏5涓鍙凤紙int锛夛紝5涓鍚嶏紙瀛楃涓诧級锛5涓垚缁╂暟缁勶紙姣忕粍涓変釜鎴愮哗锛夛紙int[3]锛夛紝渚濇璋冪敤鍑芥暟 include <stdio.h> include <stdlib.h> struct student ...
  • c璇█涓,涓涓枃浠朵腑鐨勫嚱鏁版兂鐢ㄥ彟涓涓枃浠朵腑瀹氫箟鐨缁撴瀯浣撴庝箞鍔,鐢╡x...
    绛旓細缁撴瀯浣鍦ㄥご鏂囦欢涓畾涔夛紝鐒跺悗瑕佷娇鐢ㄨ缁撴瀯浣撶殑婧愭枃浠剁洿鎺ュ鍏ヨ澶存枃浠跺嵆鍙備緥锛氱粨鏋勪綋Node //Node.h鏂囦欢#ifndef NODE_H#define NODE_Hstruct Node{ int data; Node* next;};#endif//main.cpp鏂囦欢#include "Node.h"int main(){ struct Node n; n.data = 0; n.next = NULL...
  • C璇█涓浣浠缁撴瀯浣鍙橀噺鐨勫湴鍧浣滀负鍑芥暟褰㈠弬,浠ヤ究灏嗘寚鍚戠粨鏋勪綋鍙橀噺鐨勬寚...
    绛旓細C璇█涓紝鎵鏈夌殑鍙橀噺閮藉瓨鍌ㄥ湪鍐呭瓨涓紝鍙互閫氳繃&杩愮畻绗﹁幏寰楀彉閲忕殑鍐呭瓨鍦板潃锛屽嚱鏁拌皟鐢ㄦ椂锛屽彧闇瑕佹妸鏅氬彉閲忓墠鍔犱笂&绗﹀彿锛屽氨鍙互杈惧埌浼犻掑彉閲忓湴鍧鐨勭洰鐨勩備緥濡傦細瀹氫箟涓涓缁撴瀯浣绫诲瀷 struct Yearmonthday{ int year锛 month锛 day;};瀹氫箟鐩稿叧鍑芥暟锛屽弬鏁扮被鍨嬫寚瀹氫负缁撴瀯浣撶被鍨嬫寚閽 void input(struct Yearmon...
  • 扩展阅读:c++教程 ... c语言结构体中 的用法 ... c#面试 ... c语言中结构体的使用 ... c++编程 ... c++编辑 ... c语言结构体中的冒号 ... c语言中的结构体类型 ... c语言结构体赋值给另一个结构体 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网