浅谈结构体内变量赋值问题

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

1.定义时赋值

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

3.利用函数进行赋值

赋值时再分为两类

1.非数组赋值

2.数组赋值


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

struct student{
  char name[];
  int age;
}b;

int main(){
	struct student a = {"LiMing",10};
}

2.1

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

struct student{
  int age;
  double hight;
}b;

int main(){
	b.age = 12;
	b.hight = 184.0;
	printf("%d        %f\n",b.age,b.hight);
	system("pause");
}
直接赋值即可。


2.2

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

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

比如

char a[10] = "asdad";
这是合理的。

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

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

例:

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

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

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

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

struct student{
  char *name;
  int age;
  double hight;
}b;

int main(){
	b.name = "LiMing";
	b.age = 12;
	b.hight = 184.0;
	printf("%s       %d        %f\n",b.name,b.age,b.hight);
	system("pause");
}


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

#include <string.h>
struct student{
  char name[10];
  int age;
  double hight;
}b;

int main(){
	strcpy(b.name,"LiMing");
	b.age = 12;
	b.hight = 184.0;
	printf("%s       %d        %f\n",b.name,b.age,b.hight);
	system("pause");
}

外部函数的调用

struct student{
  char *name;
  int age;
  double hight;
}b;
void f(struct student *p){
	p->name = "LiMing";
	p->age = 12;
	p->hight = 184.0;
}
int main(){
	f(&b);
	printf("%s       %d        %f\n",b.name,b.age,b.hight);
	system("pause");
}

有点类似链表。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值