fork download
  1. /*
  2.  * ポインタの活躍例
  3.  */
  4. #include<stdio.h>
  5. #include<stdlib.h>
  6. #include<string.h>
  7.  
  8. struct PERSON {
  9. char name[32], address[256], phone[16], e_mail[16];
  10. int age;
  11. };
  12.  
  13. void print_data_struct(struct PERSON d)
  14. {
  15. printf("name = %s\n", d.name);
  16. // …
  17. }
  18.  
  19. void print_data_pointer(struct PERSON *d)
  20. {
  21. printf("name = %s\n", d->name);
  22. // …
  23. }
  24.  
  25. int main()
  26. {
  27. struct PERSON data;
  28.  
  29. // data 作成
  30. strcpy(data.name, "名前");
  31. // …
  32.  
  33. printf("print_data_struct ( data); 実行… ");print_data_struct ( data);
  34. printf("print_data_pointer(&data); 実行… ");print_data_pointer(&data);
  35. printf("\nポインタ使用の有無によって、関数に渡すデータのサイズは異なる\n");
  36. printf(" ・ポインタ使用せず ~ sizeof(struct PERSON ) = %3d\n", sizeof(struct PERSON ));
  37. printf(" ・ポインタ使用する ~ sizeof(struct PERSON *) = %3d\n", sizeof(struct PERSON *));
  38.  
  39. return 0;
  40. }
Success #stdin #stdout 0.02s 1676KB
stdin
Standard input is empty
stdout
print_data_struct ( data); 実行…  name = 名前
print_data_pointer(&data); 実行…  name = 名前

ポインタ使用の有無によって、関数に渡すデータのサイズは異なる
  ・ポインタ使用せず ~ sizeof(struct PERSON  ) = 324
  ・ポインタ使用する ~ sizeof(struct PERSON *) =   4