C语言 变量、数组、结构体中的赋值


今天主要就是一个 关于 C语言变量、数组、结构体等 赋值的一篇文章

问题来源

  今天有个同学问了我一个问题?    
![定义了一个结构体](https://img-blog.csdnimg.cn/20190516095846653.png),    
student.name =  "abcd";   为什么是错的?为什么不能赋值?应该怎么赋值?

那么小编我呢,看了半天,终于总结出一篇关于这个问题的 一篇文章。

变量赋值

int main(void){
     int a = 0;
     a = 1;
    char ch = 'a';
    ch = 97;
   return 0;  
}
e:\Workspace\VSCode\test>gcc h.c      可以编译,没有出错。

基本数据类型(int 、double、char等)的变量都可以, 初始化进行赋值和 “再次
赋值

数组赋值

int main(void){
char str[20] = "abcd";
str = "qwer";
str[0] = '1';
}

常见的赋值我就不写了。

这次编译就出现了错误
e:\Workspace\VSCode\test>gcc h.c
h.c: In function ‘main’:
h.c:5:9: error:

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 结构数组赋值可以使用循环语句遍历数组元素,逐一对结构进行赋值操作。下面是一个简单的示例: ``` #include <stdio.h> struct student { char name[20]; int age; float score; }; int main() { struct student stu[3] = {{"Tom", 18, 90.5}, {"Jerry", 19, 85.5}, {"Lucy", 20, 92.0}}; struct student temp; int i, j; printf("Before sorting:\n"); for (i = 0; i < 3; i++) { printf("%s %d %.1f\n", stu[i].name, stu[i].age, stu[i].score); } // 冒泡排序,按照分数从高到低排序 for (i = 0; i < 2; i++) { for (j = 0; j < 2 - i; j++) { if (stu[j].score < stu[j+1].score) { temp = stu[j]; stu[j] = stu[j+1]; stu[j+1] = temp; } } } printf("After sorting:\n"); for (i = 0; i < 3; i++) { printf("%s %d %.1f\n", stu[i].name, stu[i].age, stu[i].score); } return 0; } ``` 上述代码,定义了一个结构类型为 `student`,包含了学生的姓名、年龄和成绩三个字段。然后定义了一个长度为 3 的结构数组 `stu`,并对其进行初始化赋值。接着使用冒泡排序算法对 `stu` 数组按照成绩从高到低进行排序,并最终输出排好序的结果。 ### 回答2: C语言结构数组赋值可以使用循环遍历的方式进行。首先需要定义一个结构类型,并声明一个结构数组变量。 例如,定义一个表示学生信息的结构类型: ```c struct Student { char name[20]; int age; int score; }; ``` 然后声明一个结构数组变量: ```c struct Student students[5]; ``` 接下来,可以使用循环遍历的方式为结构数组变量赋值。可以通过用户输入或者直接给定初始值。 ```c for (int i = 0; i < 5; i++) { printf("请输入第%d个学生的姓名:", i + 1); scanf("%s", students[i].name); printf("请输入第%d个学生的年龄:", i + 1); scanf("%d", &students[i].age); printf("请输入第%d个学生的分数:", i + 1); scanf("%d", &students[i].score); } ``` 以上代码使用循环遍历结构数组,分别为每个学生输入姓名、年龄和分数,并将输入的值分别赋给对应的结构数组元素的成员。循环的次数根据结构数组的大小而定。 通过上述方法,就可以实现 C 语言结构数组赋值操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值