以下のソースコードは、http://c-lang.sevendays-study.com/ex-day5.htmlのサンプルコードです。
// 構造体のデータを表示する関数の下の行に記載されている
void setData(student_data*,int,char*,int);に関して、なぜstudent_dataとcharはポインタ変数が定義されていて、それ以外はされていないのでしょうか。この差ってなんですか?
また、//データのセットの3行下に以下が記述されていますが、 data->name = name; にしない理由はなぜですか。
strcpy(data->name,name); // 名前のコピー
以上、ご教示のほど、よろしくお願い致します。
include <stdio.h> include <string.h> // 学生のデータを入れる構造体 typedef struct{ int id; // 学生番号 char name[256]; // 名前 int age; // 年齢 }student_data; // 構造体のデータを表示する関数 void setData(student_data*,int,char*,int); void showData(student_data*); void main(){ student_data data[4]; int i; int id[] = { 1,2,3,4 }; char name[][256] = { "山田太郎","佐藤良子","太田隆","中田優子" }; int age[] = { 18,19,18,18 }; // データの設定 for(i = 0; i < 4; i++){ setData(&data[i],id[i],name[i],age[i]); } // データの内訳を表示 for(i = 0; i < 4; i++){ showData(&data[i]); } return; } // データのセット void setData(student_data* data,int id,char* name,int age){ data->id = id; // idのコピー strcpy(data->name,name); // 名前のコピー data->age = age; // 年齢のコピー } // データの表示 void showData(student_data* data){ printf("学生番号:%d 名前:%s 年齢:%d¥n",data->id,data->name,data->age); } コード ```
回答1件
あなたの回答
tips
プレビュー