结构体变量赋值

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

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
  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. }

有点类似链表。

你可能感兴趣的:(C/C++语言,c语言)