结构体变量赋值

结构体内变量赋值暂且分为三种(笔者此时只能想到三种)

1.定义时赋值

2.定义后对变量挨个赋值

3.利用函数进行赋值

赋值时再分为两类

1.非数组赋值

2.数组赋值


1.比较简单,在此不做过多介绍,只是简单贴下代码。


 
 
  1. struct student{
  2. char name[];
  3. int age;
  4. }b;
  5. int main(){
  6. struct student a = { "LiMing", 10};
  7. }

2.1

定义后对变量挨个赋值-非数组赋值


 
 
  1. struct student{
  2. int age;
  3. double hight;
  4. }b;
  5. int main(){
  6. b.age = 12;
  7. b.hight = 184.0;
  8. printf( "%d %f\n",b.age,b.hight);
  9. system( "pause");
  10. }
直接赋值即可。


2.2

定义后对变量挨个赋值-数组赋值

C语言中规定数组初始化时可以赋值,但初始化之后再赋值是不合法的.

比如

char a[10] = "asdad";

 
 
这是合理的。


 
 
  1. char a[ 10];
  2. a[ 10] = "1234";
这是不合理的

但是可以对其单个进行赋值

例:


 
 
  1. int i[10];
  2. i[1] = 1;

因此结构体中内数组赋值可以用单个元素赋值方法进行赋值

但此种方法过于繁琐 因此笔者看过很多大神用地址的方法进行赋值

方法如下(此方法只适用于字符数组,其他数组请用单个元素赋值方法


 
 
  1. struct student{
  2. char *name;
  3. int age;
  4. double hight;
  5. }b;
  6. int main(){
  7. b.name = "LiMing";
  8. b.age = 12;
  9. b.hight = 184.0;
  10. printf( "%s %d %f\n",b.name,b.age,b.hight);
  11. system( "pause");
  12. }


3.利用函数进行赋值
(需引入string.h头文件,此时字符数组不必是地址)
内部函数的调用


 
 
  1. #include <string.h>
  2. struct student{
  3. char name[ 10];
  4. int age;
  5. double hight;
  6. }b;
  7. int main(){
  8. strcpy(b.name, "LiMing");
  9. b.age = 12;
  10. b.hight = 184.0;
  11. printf( "%s %d %f\n",b.name,b.age,b.hight);
  12. system( "pause");
  13. }

外部函数的调用


 
 
  1. struct student{
  2. char *name;
  3. int age;
  4. double hight;
  5. }b;
  6. void f( struct student *p){
  7. p->name = "LiMing";
  8. p->age = 12;
  9. p->hight = 184.0;
  10. }
  11. int main(){
  12. f(&b);
  13. printf( "%s %d %f\n",b.name,b.age,b.hight);
  14. system( "pause");
  15. }

有点类似链表。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值