结构体指针与结构体名做函数参数对比

用结构体指针做参数 

  1. #include <stdio.h>
  2. #include <string.h> // strlen 函数言行头文件、
  3. #define LOOP 20


  4. struct name {
  5.         char name_1[LOOP];
  6.         char name_2[LOOP];
  7.         int sttal;   //存储两个字符长度 
  8. };


  9. int space_string ( char *str );
  10. void string_long ( struct name * strin );
  11. void printf_name ( struct name * print );
  12. void get_string ( struct name * get );


  13. int main (void )
  14. {
  15. struct name get;
  16. get_string ( &get );
  17. string_long ( &get );
  18. printf_name ( &get );
  19. gets ("黑狼制作");
  20. return 0;
  21. }
  22. /* 字符串初始函数*/ 
  23. void get_string ( struct name *get )
  24.  {
  25.   puts ("输入你的第一个名字");
  26. gets ( get->name_1);
  27. puts ("输入你的第二个名字");
  28. gets ( get->name_2); 
  29.  }
  30.  
  31.  /*名字长度计算函数*/
  32.  
  33.  void string_long ( struct name *strin )
  34.  {
  35.   strin->sttal = space_string (strin->name_1)
  36.   + strlen (strin ->name_2);
  37.  } 
  38.  
  39.  /*打印*/
  40.  void printf_name (struct name *print )
  41.  {
  42.   printf ("%s , %s 。your name contains %d lattes \n",
  43. print->name_1 , print->name_2, print->sttal);
  44.  } 


  45. /*判断字符是不是空格函数*/ 
  46. int space_string ( char * str )
  47. {
  48. int i=0;
  49. while( *str++ != ' ' && *str != '\0')
  50.    i++;
  51. return i ;
  52. }

用结构体名作函数参数
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define LONG 20


  4. struct name {
  5.   char name_1[LONG];
  6.   char name_2[LONG];
  7.   int tatol;
  8. }; 


  9. struct name get_string (void);
  10. struct name string_long (struct name string_count );
  11. void printf_string (struct name stamp );


  12. int main (void)
  13. {
  14. struct name name_count;
  15. name_count = get_string ();
  16. name_count = string_long(name_count);
  17. printf_string (name_count);
  18. printf ("程序结束\n");
  19. return 0; 
  20. }
  21. /*字符串初始化*/ 
  22. struct name get_string(void)
  23. {
  24. struct name structe;
  25. printf ("输入你的第一个人的名字\n");
  26. gets  ( structe.name_1);
  27. printf ("输入你的第二个人的名字\n");
  28. gets ( structe.name_2 );
  29. return structe; 
  30. }


  31. /*字符串长度计算*/
  32. struct name string_long ( struct name string_count )
  33. {
  34. string_count.tatol =  strlen ( string_count.name_1 )
  35. + strlen ( string_count.name_2);


  36.   return string_count;
  37. }
  38. /*字符串的输出函数*/
  39. void printf_string ( struct name stamp )
  40. {
  41. printf ("%s, %s  两个字符串的长度是%d \n",
  42. stamp.name_1 , stamp.name_2 , stamp.tatol);
  43.  
 总结,
当用结构体名做函数参数的时候。调用函数时会根据形式参数创建一个自动的结构体变量。相当于创建了一个形式常参数的副本。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值