前提・実現したいこと
下記のコードの中で分からない箇所があり教えてください。
具体的にはInputPeople(People *data)関数の中のscanfの箇所です。
date->nameには&が付いていないのに対して、&data->ageと&data->sexには&がついてるのは何故でしょうか?
個人的には&を全部付けなくても良いと思ったのですが、付けている理由がわかりませんでした。
詳しい方教えてください。
発生している問題・エラーメッセージ
エラーは出ておりません。
該当のソースコード
C
1#include <stdio.h> 2#include <string.h> 3 4typedef struct { 5 char name[256]; 6 int age; 7 int sex; 8} People; 9 10void InputPeople(People *data); 11void ShowPeople(People data); 12 13int main(void) 14{ 15 People data[3]; 16 int i; 17 18 for (i = 0;i < 3;i++) { 19 InputPeople(&data[i]); 20 } 21 22 for (i = 0;i < 3;i++) { 23 ShowPeople(data[i]); 24 } 25 26 return 0; 27} 28 29void InputPeople(People *data) 30{ 31 printf("名前:"); 32 scanf("%s",data->name); 33 printf("年齢:"); 34 scanf("%d",&data->age); 35 printf("性別(1-男性、2-女性):"); 36 scanf("%d",&data->sex); 37 printf("\n"); 38} 39 40void ShowPeople(People data) 41{ 42 char sex[16]; 43 44 printf("名前:%s\n",data.name); 45 printf("年齢:%d\n",data.age); 46 47 if (data.sex == 1) { 48 strcpy(sex,"男性"); 49 } else { 50 strcpy(sex,"女性"); 51 } 52 53 printf("性別:%s\n",sex); 54 printf("\n"); 55}
試したこと
&をつけない状態で実行したところ、一つ目のデータを入力し終わったらプログラムが終了してしました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/08 05:28