文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言结构体数组常用的赋值方法有哪些

2023-07-02 09:37

关注

这篇“C语言结构体数组常用的赋值方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言结构体数组常用的赋值方法有哪些”文章吧。

一、按照成员变量进行赋值(麻烦,好理解,字符串赋值需要strcpy)

这里使用了一个Init函数,为了在进一步说明传参的使用。实际上赋值按照需要放在主函数就行。

(使用strcpy函数需要添加头文件string.h)

#include <stdio.h>#include <string.h>typedef struct date  //定义了一个日期结构体,包含年月日三个成员 {int year;int mouth;int day;}datea;typedef struct  schedule//定义了一个日程结构体,包含日期,和活动两个成员变量 {char name[10];datea date;char activity[200];}sch;int Init(sch *name)  //初始化函数 数组用指针接收 {strcpy(name[0].name,"jack");name[0].date.year = 2021; //使用级联运算 name[0].date.mouth = 11;name[0].date.day = 11;strcpy(name[0].activity,"Taobao shooping");strcpy(name[1].name,"Amy");name[1].date.year=2021;name[1].date.mouth = 11;name[1].date.day = 12;strcpy(name[1].activity,"play piano"); } int main(){sch name[2] ;Init(name);for(int i=0;i<2;i++){printf("%s %d %d %d \n%s \n",name[i].name,name[i].date.year,name[i].date.mouth,name[i].date.day,name[i].activity);}}

二、对数组整体进行赋值。(一次性需要把所有的都添加进去,不需要strcpy)        

(1) 在声明数组的时候,进行赋值

可以换行,中间的结构体嵌套需要再次使用花括号括起来(这里没有传参,放在被调函数不能这么赋值)。

sch name[2] = {{"jack",{2021,11,11},"Taobao Shopping"},{"jack",{2021,11,11},"Taobao Shopping"}};

也可以直接写下去:

typedef struct student {    int sno;    char name[20];} stu; int main() {    stu stua[5] = {1001,"jack",1002,"Amy"};

输出结果:

C语言结构体数组常用的赋值方法有哪些

这里举了个例子,定义了一维数组name,将name传到被调函数的时候,只剩下了首地址,对其进行赋值是[Error] declaration of 'sch name' shadows a parameter  ,就是说缺少参数,因为只有首地址,并不是完整的数组,所以不能这么赋值。

C语言结构体数组常用的赋值方法有哪些

(2)对有规律的数据赋值,比如学生结构体的学号是有规律的。

#include <stdio.h> typedef struct student  //定义了学生结构体 {int sno;char name ;}stu; stu stua[5];  //5名学生的结构体数组  int main(){for(int i=1;i<5;i++){stua[i].sno=i;  //循环赋值,5名学生的学号依次为1-5 }return 0;}

 三、使用输入进行赋值

 依然用学生为例子。

(1)直接使用for,配合动态分配内存,这里按照数据库的数据类型,我将学号定义为char型,实际上定义为int 即可。

#include <stdio.h>#include <stdlib.h> typedef struct student {    char sno[6];    char name[20];} stu; int main() {int N;scanf("%d",&N);//获得学生个数     stu * stua = (stu *)malloc(N * sizeof(stua));  //动态分配了结构体变量stua的长度         //方法一:用for给结构体赋值for(int i=0;i<N;i++){scanf("%s %s",stua[i].sno,stua[i].name);  } for(int i=0;i<N;i++){printf("%s %s\n",stua[i].sno,stua[i].name); } }

输出结果:

C语言结构体数组常用的赋值方法有哪些

(2)调用函数赋值,我们知道,结构体数组中,数组有多个元素,每个数组元素又有多个结构体成员变量,所以将每个数组元素用函数分别去赋值。

#include <stdio.h>#include <stdlib.h> typedef struct student {  //定义结构体     char sno[6];         //注意学号为char     char name[20];} stu;  stu getstu(void)         //结构体函数 {    stu tem;     scanf("%s",tem.sno);//因为是字符串,不用加取址符&,否则此处为&p.x    scanf("%s",tem.name);    return tem;} int main() {int N;scanf("%d",&N);//获得学生个数     stu * stua = (stu *)malloc(N * sizeof(stua));  //动态分配了结构体变量stua的长度         //方法二:调用函数 for(int i=0;i<N;i++){stua[i] = getstu(); }  for(int i=0;i<N;i++){printf("%s %s\n",stua[i].sno,stua[i].name); } }

 输出结果:

C语言结构体数组常用的赋值方法有哪些

(3)通过指针给到其他函数去赋值(如果你看到这,才到了精髓,传参赋值)

#include <stdio.h>#include <stdlib.h> typedef struct student {  //定义结构体     char sno[6];         //注意学号为char     char name[20];} stu;  void getstu(stu *stua)         //返回值为空即可 {        scanf("%s",stua -> sno);//因为是字符串,不用加取址符&,否则此处为&stua.x    scanf("%s",stua -> name);} int main() {int N;scanf("%d",&N);//获得学生个数     stu * stua = (stu *)malloc(N * sizeof(stua));  //动态分配了结构体变量stua的长度         //方法二:函数传参赋值 for(int i=0;i<N;i++){getstu(&stua[i]);} for(int i=0;i<N;i++){printf("%s %s\n",stua[i].sno,stua[i].name); } }

执行结果:

C语言结构体数组常用的赋值方法有哪些

以上就是关于“C语言结构体数组常用的赋值方法有哪些”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯