C语言结构体Struct怎么使用? 怎么使用结构体数组(C语言)

C\u8bed\u8a00\u7ed3\u6784\u4f53\u7684\u7528\u6cd5\uff0c

\u7ed3\u6784\u4f53\u7684\u4f7f\u7528\uff0c\u9996\u5148\u8981\u5b9a\u4e49\uff1a
#includestruct student{ char name[10]; int num; int age;};//\u6ce8\u610f\u8981\u5206\u53f7//\u7136\u540e\u5c31\u53ef\u4ee5\u4f7f\u7528\u4e86\uff1avoid main(){ struct student s; struct student *p=&s;//\u6307\u9488\u6307\u5411\uff0c\u53ef\u4ee5\u4e0d\u7528\u6307\u9488 printf("input name:"); gets(s.name);//\u82e5\u4f7f\u7528\u6307\u9488\uff0c\u5219\uff1agets(p->name); printf("input num:"); scanf("%d",&s.num);//\u6307\u9488\u7684\u5199\u6cd5\uff1ascanf("%d",&p->num); printf("input age:"); scanf("%d",&s.age); //\u8f93\u51fa\u7ed3\u679c\uff1a printf("name\tnum\tage\t\n"); printf("%s\t%d\t%d\n"); }\u7ed3\u6784\u4f53\u7c7b\u4f3c\u4e8e\u6570\u7ec4\uff0c\u4f46\u7ed3\u6784\u4f53\u80fd\u5b9a\u4e49\u4e0d\u540c\u7684\u6570\u636e\u7c7b\u578b\uff0c\u8fd9\u4e5f\u662f\u5b83\u7684\u7279\u522b\u4e4b\u5904

\u4ee3\u7801\u4ec5\u4f9b\u53c2\u8003\uff1a

#include "stdio.h"
#include "conio.h"
struct books
{
char *name;
char *press;
char *author;
float price;
};
struct books lib[]={{"C language","UESTC","Zhuang San",12.50},{"PASCAL","UESTC","Li Si",10.00},{"English Reading","UESTC","Wang wu",8.00},{"########","#####","######",0}};//\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u8fd9\u91cc\u53ea\u7ed9\u51fa\u4e09\u672c\u4e66\u7684\u4fe1\u606f
main()
{
find();
printf("Press any key continue...\n");
getch();
}
//\u56fe\u4e66\u67e5\u8be2\u5b50\u51fd\u6570
find()
{
struct books *p;
char sm[100];
int i=0;
p=&lib[i];
printf("Please input the name of books:\n");
gets(sm);
printf("The information of the books:\n");
while(p->price!=0)//\u7528p->price\u6210\u5458\u7684\u503c\u63a7\u5236\u5faa\u73af
{
if(strcmp(p->name,sm)==0)
{
printf("%18s%8s%8s%7.2f\n",p->name,p->author,p->press,p->price);
break;//\u5f53\u5b57\u7b26\u6bd4\u8f83\u51fd\u6570\u503c\u4e3a0\uff0c\u8868\u660e\u8be5\u4e66\u5df2\u627e\u5230\uff0c\u6253\u5370\u5e76\u8df3\u51fa\u5faa\u73af
}
i++;//\u5426\u5219\u5c06\u4e0b\u6807\u52a01\u79fb\u5411\u4e0b\u4e00\u5143\u7d20
p=&lib[i];//\u8ba9\u6307\u9488\u518d\u6307\u5411\u8fd9\u4e00\u5143\u7d20\u540e\u7ee7\u7eed\u67e5\u627e
}
if(p->price==0)//p->price=0,\u8868\u660e\u6574\u4e2a\u4e66\u5e93\u90fd\u5df2\u67e5\u5b8c\u5e76\u6ca1\u6709\u627e\u5230\u6240\u8981\u7684\u4e66
printf("Sorry ! Your inquires the book was not found.\n");
}

在Turbo C中,结构也是一种数据类型, 可以使用结构变量,因此,像其它类型的变量一样,在使用结构变量时要先对其定义。

如果需要定义多个具有相同形式的结构变量时用这种方法比较方便,它先作结构说明,再用结构名来定义变量。

扩展资料

指向结构体的指针是一个一直都没有掌握好的点,希望这里能记录好一点,加强理解。 
对于指针有几个好处,

第一:就像指向数组的指针比数组本身更容易操作一样,指向结构的指针通常也更容易操作; 

第二:在早期的C中参数传递只能使用结构的指针;

第三:很多奇妙的数据表示都是用了包含指向其他结构的指针的结构。 
和数组不同,结构的名字不是该结构的地址(即单独的结构名并不是该结构地址的同义词),必须使用 & 运算符。

参考资料c语言结构体struct相关使用说明



在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:

struct 结构体名{

结构体所包含的变量或数组

};

结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。

结构体定义:

第一种:只有结构体定义

struct stuff{

char job[20];

int age;

float height;

};

第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义

//直接带变量名Huqinwei

struct stuff{

char job[20];

int age;

float height;

}Huqinwei;

也许初期看不习惯容易困惑,其实这就相当于:

struct stuff{

char job[20];

int age;

float height;

};

struct stuff Huqinwei;

第三种:如果该结构体只用一个变量Huqinwei,而不再需要用struct stuff yourname;去定义第二个变量。

那么,附加变量初始化的结构体定义还可进一步简化出第三种:

struct{

char job[20];

int age;

float height;

}Huqinwei;

把结构体名称去掉,这样更简洁,不过也不能定义其他同结构体变量了——至少我现在没掌握这种方法。

结构体变量及其内部成员变量的定义及访问。

要分清结构体变量和结构体内部成员变量的概念。

就像刚才的第二种提到的,结构体变量的声明可以用:

struct stuff yourname;

其成员变量的定义可以随声明进行: struct stuff Huqinwei = {"manager",30,185};

也可以考虑结构体之间的赋值:

struct stuff faker = Huqinwei;

//或 struct stuff faker2;

// faker2 = faker;

打印,可见结构体的每一个成员变量一模一样

如果不使用上边两种方法,那么成员数组的操作会稍微麻烦(用for循环可能好点)

Huqinwei.job[0] = 'M';

Huqinwei.job[1] = 'a';

Huqinwei.age = 27;

Huqinwei.height = 185;

结构体成员变量的访问除了可以借助符号".",还可以用"->"访问。

扩展资料:

结构体数组与结构体指针:

一个结构体变量中可以存放一组数据;如一个学生的学号、姓名、成绩等数据。如果有10个学生的数据需要参加运算显然应该用数组,这就是结构体数组结构体数组与以前介绍过的数值型数组不同之处:每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员(分量)项。

结构体指针和其他类型的指针都是一样的理解,在32位平台不管啥类型的指针都占4个字节的空间。

结构体指针就是指向结构体变量的指针;如果一个指针变量中保存了结构体变量的首地址,那么这个指针变量就指向该结构体变量.通过结构体指针即可访问该结构体变量,这与数组指针和函数指针的情况是相同的结构指针变量说明的一般形式为:

struct 结构体名 *结构体指针变量名struct student *p = &Boy; //假设事先定义了 struct student Boy。

参考资料来源:百度百科-struct






结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。 

结构说明和结构变量定义: 

在Turbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此,  象其它 类型的变量一样, 在使用结构变量时要先对其定义。 

定义结构变量的一般格式为:

struct 结构名

{

类型  变量名;

类型  变量名;

...

} 结构变量; 

结构名是结构的标识符不是变量名。 类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和 无值型)。 构成结构的每一个类型变量称为结构成员, 它象数组的元素一样, 但数组中元素是以下标来访问的, 而结构是按变量名字来访问成员的。



Balance、Number、Value是结构体数据存储的部分。struct tagS_AVLNode* Left和struct tagS_AVLNode* Right不是定义的结构体,而是指向这种结构体的指针(从*可以看出)。这种情况一般是用在双向链表里面的左右指针(或者二叉树)。在链表中,这样一个结构体就叫一个结点,Left指针指向他的前一个结点,而Right指针指向他的后一个结点(需要在程序中自己写语句说明指针指向)。另外结构体里面可以包含其他结构体,但是通常是不能再包含该结构体自己。希望对你有帮助,如有疑问请联系我。谢谢。
结构体里面包含另外一个结构体举例:
typedef struct tagS_AVLNode
{
struct student
{
char name[20];
int number;
float score;
}stu1;
TSHORT Balance;
TSHORT Number; /* 外部可用来存储16位值 */
TUINT Value; /* 外部可用来存储32位值 */
} S_AVLNode;

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:

struct 结构体名{

结构体所包含的变量或数组

};

结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。

结构体定义:

第一种:只有结构体定义

struct stuff{

char job[20];

int age;

float height;

};

第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义

//直接带变量名Huqinwei

struct stuff{

char job[20];

int age;

float height;

}Huqinwei;

也许初期看不习惯容易困惑,其实这就相当于:

struct stuff{

char job[20];

int age;

float height;

};

struct stuff Huqinwei;

第三种:如果该结构体只用一个变量Huqinwei,而不再需要用struct stuff yourname;去定义第二个变量。

那么,附加变量初始化的结构体定义还可进一步简化出第三种:

struct{

char job[20];

int age;

float height;

}Huqinwei;

把结构体名称去掉,这样更简洁,不过也不能定义其他同结构体变量了——至少我现在没掌握这种方法。

结构体变量及其内部成员变量的定义及访问。

要分清结构体变量和结构体内部成员变量的概念。

就像刚才的第二种提到的,结构体变量的声明可以用:

struct stuff yourname;

其成员变量的定义可以随声明进行: struct stuff Huqinwei = {"manager",30,185};

也可以考虑结构体之间的赋值:

struct stuff faker = Huqinwei;

//或 struct stuff faker2;

// faker2 = faker;

打印,可见结构体的每一个成员变量一模一样

如果不使用上边两种方法,那么成员数组的操作会稍微麻烦(用for循环可能好点)

Huqinwei.job[0] = 'M';

Huqinwei.

  • struct鏄粈涔堟剰鎬濆湪c璇█绋嬪簭涓?
    绛旓細struct鏄C璇█涓敤浜庡畾涔缁撴瀯浣鐨勫叧閿瓧銆備互涓嬫槸鍏充簬struct鐨 1. 缁撴瀯浣撳畾涔 鍦–璇█涓紝struct鍏抽敭瀛楃敤浜庡畾涔夋暟鎹粨鏋勶紝杩欑缁撴瀯鍙互鍖呭惈澶氫釜涓嶅悓绫诲瀷鐨勬暟鎹傜粨鏋勪綋鍏佽鎴戜滑鍒涘缓涓涓寘鍚涓笉鍚岀被鍨嬫暟鎹殑鍗曚竴鏁版嵁绫诲瀷銆傞氳繃杩欑鏂瑰紡锛屾垜浠彲浠ョ粍缁囨暟鎹紝浣垮叾鏇寸鍚堢壒瀹氶棶棰樼殑闇姹傘傜粨鏋勪綋鍙互鍖呭惈涓嶅悓绫诲瀷...
  • c++鎬庝箞瀹氫箟缁撴瀯浣
    绛旓細2.缁撴瀯浣鐨勪綔鐢 缁撴瀯浣撳彲浠ュ畾涔夎嚜宸辩殑鏁版嵁绫诲瀷锛屽疄鐜板鏉傜殑鏁版嵁绫诲瀷 3.缁撴瀯浣撶殑浣跨敤struct鐨勬柟娉曞垱寤虹粨鏋勪綋 keil鎬绘槸鎻愮ず缂哄皯鍒嗗彿 澶氱骇鎺掑簭绠楁硶 涓鐩存樉绀虹粨鏋勪綋鏈畾涔 C璇█鐧诲綍绯荤粺鐨勪唬鐮 struct瀹氫箟缁撴瀯浣 c++涓嶆敮鎸侀粯璁nt鎬庝箞瑙e喅 python璋冪敤c++鍔ㄦ佸簱 ...
  • C璇█struct缁撴瀯浣浣跨敤闂
    绛旓細struct { int num;} ;杩欑鍐欐硶涓嶅鐨勩俿truct鏄釜鍏抽敭瀛楋紝鍗曠嫭瀛樺湪涓嶈兘琛ㄧず缁撴瀯浣锛宻truct student { int num;} ;杩欐牱鎵嶅锛岃繖閲岀殑struct student浣犲彲浠ョ悊瑙d负绫讳技int鐨勪竴绉嶆暟鎹被鍨嬶紝鍙笉杩囪繖绉嶆暟鎹被鍨嬫槸浣犺嚜宸卞畾涔夌殑锛岄噷闈㈠瓨鏀剧殑鏁版嵁鏈夌壒瀹氱殑瑙勬牸銆傛湜閲囩撼锛屼笉鎳傚彲杩介棶銆
  • c璇█struct鍜宼ypedef struct鏈変粈涔堝尯鍒?
    绛旓細C璇█缁撴瀯浣涓struct鍜宼ypedef struct鍖哄埆涓猴細澹版槑涓嶅悓銆佽闂笉鍚屻侀噸鏂板畾涔変笉鍚屻備竴銆佸0鏄庝笉鍚 1銆乻truct锛歴truct鍙互鐩存帴浣跨敤缁撴瀯浣撳悕瀛楀0鏄庣粨鏋勪綋銆2銆乼ypedef struct锛歵ypedef struct鐨勪负銆備慨楗扮粨鏋勪綋锛岀粨鏋勪綋鏈変簡鍒悕锛岄氳繃缁撴瀯浣撳埆鍚嶅0鏄庣粨鏋勪綋銆備簩銆佽闂笉鍚 1銆乻truct锛歴truct瀹氫箟鐨勭粨鏋勪綋鍙橀噺锛屽彲...
  • C璇█涓殑缁撴瀯浣鏄粈涔堟剰鎬濆晩?
    绛旓細瀹氫箟涓庡0鏄 缁撴瀯浣撶殑瀹氫箟濡備笅鎵绀猴紝struct涓虹粨鏋勪綋鍏抽敭瀛楋紝tag涓虹粨鏋勪綋鐨勬爣蹇楋紝member-list涓虹粨鏋勪綋鎴愬憳鍒楄〃锛屽叾蹇呴』鍒楀嚭鍏舵墍鏈夋垚鍛橈紱variable-list涓烘缁撴瀯浣撳0鏄庣殑鍙橀噺銆傚湪瀹為檯搴旂敤涓紝C璇█缁撴瀯浣鏁扮粍甯歌鐢ㄦ潵琛ㄧず涓涓嫢鏈夌浉鍚屾暟鎹粨鏋勭殑缇や綋锛屾瘮濡備竴涓彮鐨勫鐢熴佷竴涓溅闂寸殑鑱屽伐绛夈傚湪C璇█涓紝瀹氫箟缁撴瀯...
  • C璇█涓,&缁撴瀯浣鏄粈涔堟搷浣滃憿
    绛旓細2. 缁撴瀯浣撴庝箞鐢紵2.1 瀹氫箟缁撴瀯浣 璇硶 struct 缁撴瀯浣鍚峽 鎴愬憳鍒楄〃;};1 2 3 缁撴瀯浣撻噷闈㈢殑鎴愬憳瀹氫箟鏂瑰紡涓庡彉閲忕浉鍚岋紝涔熷氨鏄湪缁撴瀯浣撻噷闈㈠畾涔変簡澶氫釜鍙橀噺銆備緥濡傦紝瀹氫箟涓涓鐢熺殑缁撴瀯浣擄細struct Student { char name[32]; //濮撳悕 int age; //骞撮緞 float score; //鎴愮哗 };1 2 3...
  • C璇█涓畾涔缁撴瀯浣鐨勫嚑绉嶆柟娉
    绛旓細1銆佸厛瀹氫箟缁撴瀯浣绫诲瀷锛屽啀瀹氫箟缁撴瀯浣撳彉閲忋structstudent{ charno[20];//瀛﹀彿 charname[20];//濮撳悕 charsex[5];//鎬у埆 intage;//骞撮緞 };structstudentstu1,stu2;//姝ゆ椂stu1,stu2涓簊tudent缁撴瀯浣撳彉閲 2銆佸畾涔夌粨鏋勪綋绫诲瀷鐨勫悓鏃跺畾涔夌粨鏋勪綋鍙橀噺銆俿tructstudent{ charno[20];//瀛﹀彿 charname[20];...
  • 缁撴瀯浣揷璇█鏄粈涔?
    绛旓細鍦C璇█涓紝缁撴瀯浣锛struct锛夋寚鐨勬槸涓绉嶆暟鎹粨鏋勶紝鏄疌璇█涓鍚堟暟鎹被鍨嬶紙aggregate data type锛夌殑涓绫汇傜粨鏋勪綋鍙互琚0鏄庝负鍙橀噺銆佹寚閽堟垨鏁扮粍绛夛紝鐢ㄤ互瀹炵幇杈冨鏉傜殑鏁版嵁缁撴瀯銆傜粨鏋勪綋鍚屾椂涔熸槸涓浜涘厓绱犵殑闆嗗悎锛岃繖浜涘厓绱犵О涓虹粨鏋勪綋鐨勬垚鍛橈紙member锛夛紝涓旇繖浜涙垚鍛樺彲浠ヤ负涓嶅悓鐨勭被鍨嬶紝鎴愬憳涓鑸敤鍚嶅瓧璁块棶銆備竴銆...
  • c璇█涓濡備綍瀹氫箟涓涓缁撴瀯浣
    绛旓細缁撴瀯浣鐨勫畾涔夊涓嬫墍绀猴紝struct涓虹粨鏋勪綋鍏抽敭瀛楋紝tag涓虹粨鏋勪綋鐨勬爣蹇楋紝member-list涓虹粨鏋勪綋鎴愬憳鍒楄〃锛屽叾蹇呴』鍒楀嚭鍏舵墍鏈夋垚鍛橈紱variable-list涓烘缁撴瀯浣撳0鏄庣殑鍙橀噺銆傚湪涓鑸儏鍐典笅锛宼ag銆乵ember-list銆乿ariable-list杩3閮ㄥ垎鑷冲皯瑕佸嚭鐜2涓傜粨鏋勪綋鐨勬垚鍛樺彲浠ュ寘鍚叾浠栫粨鏋勪綋锛屼篃鍙互鍖呭惈鎸囧悜鑷繁缁撴瀯浣撶被鍨嬬殑鎸囬拡锛岃...
  • 缁撴瀯浣鐨C璇█涓殑缁撴瀯浣
    绛旓細鍦C璇█涓紝缁撴瀯浣(struct)鎸囩殑鏄竴绉嶆暟鎹粨鏋勶紝鏄疌璇█涓仛鍚堟暟鎹被鍨(aggregate data type)鐨勪竴绫汇傜粨鏋勪綋鍙互琚0鏄庝负鍙橀噺銆佹寚閽堟垨鏁扮粍绛夛紝鐢ㄤ互瀹炵幇杈冨鏉傜殑鏁版嵁缁撴瀯銆傜粨鏋勪綋鍚屾椂涔熸槸涓浜涘厓绱犵殑闆嗗悎锛岃繖浜涘厓绱犵О涓虹粨鏋勪綋鐨勬垚鍛(member)锛屼笖杩欎簺鎴愬憳鍙互涓轰笉鍚岀殑绫诲瀷锛屾垚鍛樹竴鑸敤鍚嶅瓧璁块棶銆 缁撴瀯浣撶殑...
  • 扩展阅读:typedef struct结构体 ... struct tm结构体 ... c语言struct结构体数组 ... c语言结构体使用例子 ... struct结构体内部赋值 ... 结构体struct赋初值 ... c语言结构体简单例子 ... struct结构体的内存 ... struct结构体怎么计算大小 ...

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