结构体内变量赋值暂且分为三种(笔者此时只能想到三种)
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");
- }
有点类似链表。

911

被折叠的 条评论
为什么被折叠?



