结构体变量的三种赋值方式以及三种常见错误的赋值方式
【摘要】 一、正确的三种赋值方式
1.定义变量的同时初始化赋值
2.通过“=”赋值
3.通过scanf()函数赋值
二、常见的三种错误赋值方式
1.不能在结构体内部给成员赋初值。
2.定义结构体变量的同时初始化时,不能跳过去前面的成员为后面的成员赋值。
3.给字符串赋值时,不能使用“ = ”。
一、正确的三种赋值方式
#include<stdio.h>
#include<string.h>
struct student
{
int age; //年龄
char name[20]; //姓名
int id; //学号
char phoneNum[20]; //手机号
// int test = 16; //报错 ,不能在结构体内部赋值
// id = 1; //报错 ,不能在结构体内部赋值
};
int main()
{
printf("年龄\t姓名\t学号\t手机号");
printf("\n=================================\n");
//一、定义变量的同时初始化为stu1赋值
struct student stu1 = {18 , "张三", 17 , "17638888888"}; //类似于数组,必须严格按照定义结构体类型时的成员顺序填写
// struct student stu4 = {18 , "张三" , , "17638888888"}; // 报错 ,不能不按顺序写,也不能跳过。
printf("%d\t%s\t%d\t%s\n",stu1.age,stu1.name,stu1.id,stu1.phoneNum);
//二、利用赋值语句逐条为stu2赋值
struct student stu2;
stu2.age = 19;
// stu2.name = "张三"; //报错,字符串不能通过“= ”赋值
strcpy(stu2.name,"李四");
stu2.id = 18;
strcpy(stu2.phoneNum,"19334533534");
printf("%d\t%s\t%d\t%s\n",stu2.age,stu2.name,stu2.id,stu2.phoneNum);
//三、通过scanf()函数为stu3赋值
struct student stu3;
scanf("%d%s%d%s",&stu3.age,stu3.name,&stu3.id,stu3.phoneNum);
printf("%d\t%s\t%d\t%s\n",stu3.age,stu3.name,stu3.id,stu3.phoneNum);
return 0;
}
二、常见的三种错误赋值方式
1.不能在结构体内部给成员赋初值。如下面的用法会报错
struct student
{
int age = 17; //报错,不能在结构体内部定义成员时赋初值。
char name[20] = "张三";
int id = "10";
char phoneNum[20] = "17637578839";
};
2.定义结构体变量的同时初始化时,不能跳过去前面的成员为后面的成员赋值。如下面的用法会报错
struct student stu4 = {18 , "张三" , , "17638888888"}; // 报错 ,不能不按顺序写,也不能跳过。
3.给字符串赋值时,不能使用“ = ”。如下面的用法会报错
stu2.name = "张三"; //报错,字符串不能通过“= ”赋值
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)