c语言结构性数组 C语言 结构体数组的个数如何自己定义?

C\u8bed\u8a00\u7ed3\u6784\u4f53\u6570\u7ec4\u7684\u5b9a\u4e49

\u6240\u8c13\u7ed3\u6784\u4f53\u6570\u7ec4\uff0c\u662f\u6307\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e2a\u5143\u7d20\u90fd\u662f\u4e00\u4e2a\u7ed3\u6784\u4f53\u3002\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\uff0cC\u8bed\u8a00\u7ed3\u6784\u4f53\u6570\u7ec4\u5e38\u88ab\u7528\u6765\u8868\u793a\u4e00\u4e2a\u62e5\u6709\u76f8\u540c\u6570\u636e\u7ed3\u6784\u7684\u7fa4\u4f53\uff0c\u6bd4\u5982\u4e00\u4e2a\u73ed\u7684\u5b66\u751f\u3001\u4e00\u4e2a\u8f66\u95f4\u7684\u804c\u5de5\u7b49\u3002
\u7ed3\u6784\u4f53\u53ef\u4ee5\u5b58\u50a8\u4e0d\u540c\u7684\u6570\u636e\u7c7b\u578b\uff0c\u5c06\u4ed6\u4eec\u4e92\u76f8\u8054\u7cfb\u8d77\u6765\u3002\u7ed3\u6784\u4f53\u6570\u7ec4\u53ef\u4ee5\u8fde\u7eed\u5b58\u50a8\u591a\u4e2a\u7ed3\u6784\u4f53\uff0c\u548c\u6570\u7ec4\u4f5c\u7528\u76f8\u4f3c\u3002\u6bd4\u5982\u60f3\u5b9a\u4e49\u540c\u4e00\u4e2a\u6700\u5c0f\u5916\u63a5\u77e9\u5f62\u7684\u56db\u4e2a\u5750\u6807\u503c\uff0c\u5e76\u7ed9\u4e88\u8fd9\u4e2a\u77e9\u5f62\u4e00\u4e2a\u7279\u5f81\u7f16\u53f7\u3002\u5f53\u9700\u8981\u5b58\u50a8\u591a\u4e2a\u6700\u5c0f\u5916\u63a5\u77e9\u5f62\u7684\u4fe1\u606f\u65f6\uff0c\u5c31\u9700\u8981\u52a8\u6001\u7533\u8bf7\u4e00\u4e2a\u7ed3\u6784\u4f53\u6570\u7ec4\u3002
struct \u7ed3\u6784\u4f53\u7c7b\u578b\u540d\uff5b\u7c7b\u578b\u540d \u6210\u5458\u540d\uff1b\u7c7b\u578b\u540d \u6210\u5458\u540d\uff1b\u2026\u2026\uff5d\uff0c\u5148\u58f0\u660e\u7ed3\u6784\u4f53\u7c7b\u578b\uff0c\u518d\u5b9a\u4e49\u7ed3\u6784\u4f53\u53d8\u91cf\u540d\u3002\u58f0\u660e\u7ed3\u6784\u4f53\u7c7b\u578b\uff0c\u4e0d\u5206\u914d\u7a7a\u95f4\uff0c\u5b9a\u4e49\u7ed3\u6784\u4f53\u7c7b\u578b\u53d8\u91cf\uff0c\u5c31\u8981\u5206\u914d\u5185\u5b58\u7a7a\u95f4\u3002

\u6269\u5c55\u8d44\u6599\uff1a
\u7ed3\u6784\u4f53\u6570\u7ec4\u6307\u9488\u7c7b\u578b\uff1a
\u4e00\u4e2a\u7ed3\u6784\u4f53\u53d8\u91cf\u7684\u6307\u9488\u5c31\u662f\u8be5\u53d8\u91cf\u6240\u5360\u636e\u7684\u5185\u5b58\u6bb5\u7684\u8d77\u59cb\u5730\u5740\u3002\u53ef\u4ee5\u8bbe\u4e00\u4e2a\u6307\u9488\u53d8\u91cf\uff0c\u7528\u6765\u6307\u5411\u4e00\u4e2a\u7ed3\u6784\u4f53\u53d8\u91cf\uff0c\u6b64\u65f6\u8be5\u6307\u9488\u53d8\u91cf\u7684\u503c\u662f\u7ed3\u6784\u4f53\u53d8\u91cf\u7684\u8d77\u59cb\u5730\u5740\uff0c\u6307\u9488\u53d8\u91cf\u4e5f\u53ef\u4ee5\u7528\u6765\u6307\u5411\u7ed3\u6784\u4f53\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u3002
1\u3001\u7c7b\u578b\u4e00\uff1a
\u6307\u5411\u7ed3\u6784\u4f53\u53d8\u91cf\u7684\u6307\u9488\u5f15\u7528\u7ed3\u6784\u4f53\u53d8\u91cf\u4e2d\u7684\u6210\u5458\u3002
2\u3001\u7c7b\u578b\u4e8c\uff1a
\u7528\u7ed3\u6784\u4f53\u53d8\u91cf\u548c\u6307\u5411\u7ed3\u6784\u4f53\u53d8\u91cf\u7684\u6307\u9488\u6784\u6210\u94fe\u8868\uff0c\u94fe\u8868\u662f\u4e00\u79cd\u5e38\u89c1\u7684\u91cd\u8981\u7684\u6570\u636e\u7ed3\u6784\u3002\u94fe\u8868\u6709\u4e00\u4e2a\u201c\u5934\u6307\u9488\u201d\u53d8\u91cf\uff0c\u4ee5head\u8868\u793a\uff0c\u5b83\u5b58\u653e\u4e00\u4e2a\u5730\u5740\u3002\u8be5\u5730\u5740\u6307\u5411\u4e00\u4e2a\u5143\u7d20\u3002
\u94fe\u8868\u4e2d\u7684\u6bcf\u4e00\u4e2a\u5143\u7d20\u79f0\u4e3a\u201c\u7ed3\u70b9\u201d\uff0c\u6bcf\u4e2a\u7ed3\u70b9\u90fd\u5e94\u5305\u62ec\u4e24\u4e2a\u90e8\u5206\uff1a
\u4e00\u662f\u7528\u6237\u9700\u8981\u7528\u7684\u5b9e\u9645\u6570\u636e\uff0c
\u4e8c\u662f\u4e0b\u4e00\u4e2a\u7ed3\u70b9\u7684\u5730\u5740\u3002
\u94fe\u8868\u4e2d\u5404\u5143\u7d20\u5728\u5185\u5b58\u4e2d\u7684\u5b58\u50a8\u5355\u5143\u53ef\u4ee5\u662f\u4e0d\u8fde\u7eed\u7684\u3002\u8981\u627e\u67d0\u4e00\u5143\u7d20\uff0c\u53ef\u4ee5\u5148\u627e\u5230\u4e0a\u4e00\u4e2a\u5143\u7d20\uff0c\u6839\u636e\u5b83\u63d0\u4f9b\u7684\u4e0b\u4e00\u5143\u7d20\u5730\u5740\u627e\u5230\u4e0b\u4e00\u4e2a\u5143\u7d20\u3002\u8fd9\u79cd\u94fe\u8868\u7684\u6570\u636e\u7ed3\u6784\uff0c\u5fc5\u987b\u5229\u7528\u7ed3\u6784\u4f53\u53d8\u91cf\u548c\u6307\u9488\u624d\u80fd\u5b9e\u73b0\u3002
\u53ef\u4ee5\u58f0\u660e\u4e00\u4e2a\u7ed3\u6784\u4f53\u7c7b\u578b\uff0c\u5305\u542b\u4e24\u79cd\u6210\u5458\uff0c\u4e00\u79cd\u662f\u7528\u6237\u9700\u8981\u7528\u7684\u5b9e\u9645\u6570\u636e\uff0c\u53e6\u4e00\u79cd\u662f\u7528\u6765\u5b58\u653e\u4e0b\u4e00\u7ed3\u70b9\u5730\u5740\u7684\u6307\u9488\u53d8\u91cf\u3002
\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1\u2014\u7ed3\u6784\u4f53\u7c7b\u578b\u2014\u6570\u7ec4

C99\u6807\u51c6\u51fa\u6765\u4ee5\u524d\uff0cC\u8bed\u8a00\u4e0d\u652f\u6301\u52a8\u6001\u5b9a\u4e49\u6570\u7ec4\u5927\u5c0f\uff0c\u53ea\u80fd\u91c7\u7528\u52a8\u6001\u5206\u914d\u6307\u9488\u65b9\u5f0f\u6765\u5b8c\u6210\u52a8\u6001\u6570\u7ec4\u7684\u4e2a\u6570\u5b9a\u4e49\u3002\u5982\uff1a
struct st { int x,y; char str[10];};struct st *array ;int n;printf("input n: "); scanf("%d", &n);array=(struct st*)malloc(n*sizeof(struct st)); //\u52a8\u6001\u5206\u914dn\u4e2a\u7ed3\u6784\u4f53\u7a7a\u95f4\uff0c\u63a5\u4e0b\u6765array\u7684\u64cd\u4f5c\uff0c\u4e0e\u6570\u7ec4\u64cd\u4f5c\u662f\u76f8\u540c\u7684\uff0c\u5982\uff1aarray[0].x=1 ;C99\u4ee5\u540e\uff0cC\u8bed\u8a00\u6807\u51c6\u5f00\u59cb\u652f\u6301\u52a8\u6001\u5b9a\u4e49\u6570\u7ec4\uff0c\u4f46\u52a8\u6001\u6570\u7ec4\uff0c\u5728\u5176\u786e\u5b9a\u4e2a\u6570\u4e4b\u540e\uff0c\u5728\u5176\u751f\u547d\u671f\u4e2d\uff0c\u5c31\u4e0d\u53ef\u53d8\u4e86\u3002\u5982\uff1a
struct st { int x,y; char str[10];};int n;printf("input n: "); scanf("%d", &n);struct st array[n] ; //\u5b9a\u4e49\u52a8\u6001\u6570\u7ec4array[0].x=1 ;

1、C语言结构体数组的定义:数组是有序的并且具有相同类型的数据的集合。
2、结构数组就是具有相同结构类型的变量集合。假如要用C语言,定义一个班级40个同学的姓名、性别、年龄和住址, 可以做成一个结构数组。
结构数组成员的访问是以数组元素为结构变量的,它的形式为:
1、结构数组元素—成员名。
2、例如:student[0].name,student[30].age
3、实际上结构数组相当于一个二维构造, 第一维是结构数组元素, 每个元素是一个结构变量, 第二维是结构成员。
注意:结构数组的成员也可以是数组变量。

我测试,不想输入20个学生,就用6个学生测试,你把常量改成20就行。

#include <stdio.h>
#include <malloc.h>
typedef struct student
{
    int id;
    int score;
}STU;
#define stuNum 6 //学生数量 我测试只用6个学生,你改成20就行
void printfStu(STU stu[],int len);
STU *moveStu1ToStu2ByScore(STU **stu1,int len,int score);//将成绩大于score的学生信息,从stu1中转移到stu2中,返回stu2首地址
int count;//大于指定分数的学生
int main()
{
    STU *stu1=NULL,*stu2=NULL;
    int i,se;
    stu1=(STU *)calloc(stuNum,sizeof(STU));

    printf("输入%d个学生的学号及成绩到数组1:
",stuNum);
    for(i=0;i<stuNum;i++)
        scanf("%d%d",&stu1[i].id,&stu1[i].score);
    printf("数组1的学生信息:
");
    printfStu(stu1,stuNum);

    printf("输入要转移的学生分界成绩(大于该成绩):");
    scanf("%d",&se);
    stu2=moveStu1ToStu2ByScore(&stu1,stuNum,se);
    printf("数组1的学生信息:
");
    printfStu(stu1,stuNum-count);
    printf("数组2的学生信息:
");
    printfStu(stu2,count);
    return 0;
}
STU *moveStu1ToStu2ByScore(STU **stu1,int len,int score)
{
    int i,j=0,k=0;
    count=0;
    STU *stuSave=NULL,*stu2=NULL;
    for(i=0;i<len;i++)
        if((*stu1)[i].score>score)
            count++;
   stuSave=(STU *)calloc(stuNum-count,sizeof(STU));
   stu2=(STU *)calloc(count,sizeof(STU));
   for(i=0;i<len;i++)
        if((*stu1)[i].score>score)
            stu2[j++]=(*stu1)[i];
        else
            stuSave[k++]=(*stu1)[i];
   free(*stu1);
   *stu1=stuSave;
   return stu2;
}
void printfStu(STU stu[],int len)//打印学生结构数组
{
    int i;
    printf("学号    成绩:
");
    for(i=0;i<len;i++)
        printf("%d    %d
",stu[i].id,stu[i].score);
}


C99标准出来以前,C语言不支持动态定义数组大小,只能采用动态分配指针方式来完成动态数组的个数定义。如: struct st { int x,y; char str[10];};struct st *array ;int n;printf("input n: "); scanf("%d", &n);array=(struct st*)malloc(n*si...

  • C璇█涓,缁撴瀯浣鏁扮粍鍜屼簩缁存暟缁勭殑宸埆? 鍒濆鑰,璇疯鐨勭畝鍗曚竴浜
    绛旓細浜岀淮鏁扮粍 鍚湁鐨勬暟 鏄悓涓绉嶅彉閲忕被鍨嬬殑銆缁撴瀯浣 鍚湁鐨勬暟 涓鑸槸涓嶅悓鍙橀噺绫诲瀷鐨勩傜粨鏋勪綋鏁扮粍 鏄惈鏈夊涓 鍚屼竴绉嶇粨鏋勭殑 缁勫悎銆備簩缁存暟缁勶紝鏁板涓婂彲浠ユ帓鍒楁垚 鐭╅樀锛屽嚑琛屽嚑鍒椼傜粨鏋勪綋鍜 缁撴瀯浣撴暟缁勶紝涓嶈兘 鎺掑垪鎴 鐭╅樀銆
  • c璇█涓暟缁鍜缁撴瀯浣撴湁浠涔堝尯鍒?
    绛旓細涓句緥濡備笅锛歩nt a[5]; // 鏁扮粍a鐨5涓厓绱犻兘鏄痠nt绫诲瀷 struct stu { int num;char name[5];float score;}std; // 缁撴瀯浣搒td鐨勪笁涓垚鍛樺垎鍒槸int鍨嬨乧har鍨嬪拰float鍨嬶紝鏁版嵁绫诲瀷涓嶅悓銆2銆佽皟鐢ㄦ椂鍊欑殑鍖哄埆 鏁版嵁鏄洿鎺ョ敤褰㈠鈥滄暟缁勫悕[涓嬫爣]鈥濈殑鏂瑰紡璋冪敤锛屽a[3]锛岃〃绀烘暟缁刟鐨勭4涓厓绱狅紙...
  • c璇█涓粨鏋勬暟缁鑳藉惁鐩存帴鐩镐箻
    绛旓細涓嶈兘锛缁撴瀯鏁扮粍鏄竴绉嶅鏉傜殑鏁版嵁绫诲瀷.涓嶄粎涓嶈兘鐩镐箻锛岃屼笖杩樹笉鑳界浉鍔狅紝鐩稿噺銆傚畠涔熶笉鍚屼簬鎸囬拡锛屾寚鍚戞暟缁勭殑鎸囬拡鏄彲浠ュ拰int 绫诲瀷鏁拌繍绠椼
  • C璇█棰樼洰,姹傚ぇ绁炶В绛
    绛旓細鏍规嵁瑕佹眰锛屽彲浠ョ紪鍐欏涓缁撴瀯鏁扮粍鏁版嵁澶勭悊绋嬪簭锛歩nclude <stdio.h> include <string.h> //瀹氫箟缁撴瀯绫诲瀷 typedef struct { long id; //瀛﹀彿 char name[10]; //濮撳悕 char sex[2]; //鎬у埆 }PS;//鍒犻櫎鍑芥暟 int delete(PS *p1, int m, PS *p2, int n){ int i, j;//閬嶅巻p1鏁扮粍...
  • C璇█缁撴瀯浣鏁扮粍鍙互鍖呭惈涓嶅悓缁撴瀯浣撶被鍨嬬殑鍙橀噺鍚
    绛旓細涓句釜渚嬪瓙 struct A // A灏辨槸褰㈠杩欐牱鐨缁撴瀯浣撶殑鍚嶅瓧 { int a; int b; }; struct B // B灏辨槸褰㈠杩欐牱鐨勭粨鏋勪綋鐨勫悕瀛 { char a[10]; }; 涓や釜缁撴瀯浣撻兘鏄嚜瀹氫箟鐨勶紝鎵浠ラ渶瑕佺煡閬撲娇鐢ㄧ殑鏄摢涓粨鏋勪綋锛屾墍浠ヨ皟鐢ㄨ繖涓粨鏋勪綋鐨勬椂鍊欏繀椤诲啓鎴恠truct A锛屾墠绠楁槸A缁撴瀯浣撶殑绫诲瀷锛...
  • c璇█缁撴瀯鏁扮粍,濡備綍鍒涘缓澶栭儴鏁扮粍鍜岄潤鎬佹暟缁
    绛旓細鍏充簬鏁扮粍瀹氫箟鍦ㄦ爤涓淮搴﹀ぇ灏忓彈闄愶紝鎯宠瀹氫箟鍦ㄥ爢涓紝鍙互鐢╩alloc鐢宠銆傝缁嗙湅鎴戝啓鐨勬渚嬪娉ㄥ惂銆俰nclude<stdio.h>#include"externFile.c"//澶栭儴鏂囦欢#include<malloc.h>extern struct book2 b2;//澶栭儴鍙橀噺锛氳繖閲岀殑缁撴瀯鍙橀噺b2鏄娇鐢ㄧ殑externFile.c鏂囦欢涓殑鍙橀噺(externFile.c鍜屾湰鏂囦欢鍦ㄥ悓涓涓洰褰曚笅)...
  • C璇█ 缁撴瀯浣鏁扮粍 璁$畻涓暟
    绛旓細绗竴绉嶆柟娉曪紝璁剧疆涓涓缁撴瀯浣撳彉閲忕殑鎴愬憳涓烘煇涓叿浣撶殑甯搁噺锛岃繘琛岄亶鍘嗗鎵惧緱鍑哄彉閲忕殑鏁伴噺 绗簩绉嶆柟娉曪紝鍦ㄨ緭鍏ユ椂璁$畻 绗笁绉嶏紝寤虹珛涓涓湁鎸囬拡鍩熺殑鍔ㄦ侀摼琛 鐢ㄧ涓夌鏂规硶瀹炵幇鐨勪竴涓緥瀛愶紝鍙敤鏉ュ绫嶇鐞嗙郴缁 include <stdio.h> include <stdlib.h> include <conio.h> typedef struct student { int num;...
  • C璇█缁撴瀯浣鏁扮粍
    绛旓細define N 3#include <stdio.h>struct Book{char Sm[100]; //涔﹀悕 char Zz[20]; //浣滆 int Nian,Yue,Kc;};void paixu(struct Book s[],int n){struct Book t;int i,j;for(i=0;i<n-1;i++) for(j=i+1;j<n;j++)if (s[i].Kc<s[j].Kc){t=s[i];s[i]=s[j...
  • c璇█缁撴瀯浣撻棶棰樻兂闂竴涓媋銆恑銆.s浠涔堟剰鎬?璋㈣阿!
    绛旓細a鏄粨鏋勪綋鏁扮粍锛宨鏄繖涓暟缁勭殑绗琲涓粨鏋勪綋锛沘[i]鍚屼竴涓被鍨嬫暟鎹殑涓涓寚閽堬紝杩欏効鏄垽鏂璼鎸囧悜鐨勮繖涓粨鏋勯噷鐨勬垚鍛榮鏄惁姣攁[i]閲岀殑s澶э紱s鏄寚鍚缁撴瀯鏁扮粍a鐨勬煇涓涓硷紝杩欏疄闄呭氨鏄瘮杈冪粨鏋勬暟缁刟閲岄潰鐨2涓厓绱犵殑s鐨勫肩殑澶у皬銆備緥锛歴truct A { int s锛泒a[i]锛汚 *s锛...
  • c璇█缁撴瀯浣撶被鍨鏁扮粍闀垮害
    绛旓細杈撳嚭2鏄纭殑锛屽師鍥犲涓嬶細strlen锛堬級鏄壘鍑哄瓧绗鏁扮粍褰撲腑鈥榎0鈥欙紙00H锛夊墠闈㈡湁鍑犱釜瀛楃銆備綘鐨 card[0].num=1000;杞崲涓哄瓧绗﹀瀷锛堟暟鎹牸寮忎负灏忕瀵归綈锛夋暟缁勪箣鍚庝负E8H 03H 00H 00H 绗笁涓瓧绗︿负鈥榎0鈥欙紝鎵浠ュ嚱鏁拌涓哄彧鏈変袱涓瓧绗︺傛ゼ涓昏鐨勯暱搴﹁绠桳ength=sizeof(card)/sizeof(struct student);...
  • 扩展阅读:c#面试题 ... c语言数组嵌套数组 ... c语言数组代码 ... c#一般用来开发什么 ... c语言定义结构体数组 ... c语言怎么定义数组 ... c#基本结构 ... c#二维数组 ... struct结构体数组 ...

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