回答編集履歴
7
表現変更
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
コピーせずに構造体を共有したい場合は構造体のアドレスを引き渡すようにします。関数の仮引数はポインタ変数で引き受けます。関数の中で構造体の内容を変更すると呼び出し元の構造体が変更されます。
|
5
5
|
|
6
6
|
配列は参照型で、関数に渡すとアドレス(ポインタ)が引き渡ります。関数の仮引数はポインタ変数で引き受けることもできますが、配列定義で引き受けとることもできて配列として処理を書けます。
|
7
|
-
配列はコピーされずに共有されているので、関数内で配列内容を変更すると呼び出し元の配列が変更されます。
|
7
|
+
配列はコピーされずに共有されているので、関数内で配列内容を変更すると呼び出し元の配列内容が変更されます。
|
8
8
|
|
9
9
|
```c
|
10
10
|
#include <stdio.h>
|
6
表現変更
answer
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
質問内容とちょっと違いますが、以下に示すソースコードのように構造体の配列にすれば処理がスッキリしますよ。
|
2
2
|
|
3
3
|
構造体は値型で、関数に渡すと構造体のコピーが渡され、関数の中で構造体の内容を変更しても呼び出し元の構造体内容は変更されません。
|
4
|
-
コピーせずに構造体を共有したい場合は構造体のアドレスを渡すようにします。関数の引数はポインタ変数で引き受けます。関数の中で構造体の内容を変更すると呼び出し元の構造体が変更されます。
|
4
|
+
コピーせずに構造体を共有したい場合は構造体のアドレスを引き渡すようにします。関数の仮引数はポインタ変数で引き受けます。関数の中で構造体の内容を変更すると呼び出し元の構造体が変更されます。
|
5
5
|
|
6
|
-
配列は参照型で、関数に渡すとアドレス(ポインタ)が渡ります。関数の引数はポインタ変数で引き受けることもできますが、配列定義で引き受けとることもできて配列として処理を書けます。
|
6
|
+
配列は参照型で、関数に渡すとアドレス(ポインタ)が引き渡ります。関数の仮引数はポインタ変数で引き受けることもできますが、配列定義で引き受けとることもできて配列として処理を書けます。
|
7
|
-
配列はコピーされずに共有
|
7
|
+
配列はコピーされずに共有されているので、関数内で配列内容を変更すると呼び出し元の配列が変更されます。
|
8
8
|
|
9
9
|
```c
|
10
10
|
#include <stdio.h>
|
5
説明補足
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
質問内容とちょっと違いますが、以下のように構造体の配列にすれば処理がスッキリしますよ。
|
1
|
+
質問内容とちょっと違いますが、以下に示すソースコードのように構造体の配列にすれば処理がスッキリしますよ。
|
2
2
|
|
3
3
|
構造体は値型で、関数に渡すと構造体のコピーが渡され、関数の中で構造体の内容を変更しても呼び出し元の構造体内容は変更されません。
|
4
4
|
コピーせずに構造体を共有したい場合は構造体のアドレスを渡すようにします。関数の引数はポインタ変数で引き受けます。関数の中で構造体の内容を変更すると呼び出し元の構造体が変更されます。
|
4
説明補足
answer
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
質問内容とちょっと違いますが、以下のように構造体の配列にすれば処理がスッキリしますよ。
|
2
2
|
|
3
|
+
構造体は値型で、関数に渡すと構造体のコピーが渡され、関数の中で構造体の内容を変更しても呼び出し元の構造体内容は変更されません。
|
4
|
+
コピーせずに構造体を共有したい場合は構造体のアドレスを渡すようにします。関数の引数はポインタ変数で引き受けます。関数の中で構造体の内容を変更すると呼び出し元の構造体が変更されます。
|
5
|
+
|
6
|
+
配列は参照型で、関数に渡すとアドレス(ポインタ)が渡ります。関数の引数はポインタ変数で引き受けることもできますが、配列定義で引き受けとることもできて配列として処理を書けます。
|
7
|
+
配列はコピーされずに共有しているので、配列内容を変更すると呼び出し元の配列が変更されます。
|
8
|
+
|
3
9
|
```c
|
4
10
|
#include <stdio.h>
|
5
11
|
#include <stdlib.h>
|
3
コード修正
answer
CHANGED
@@ -107,8 +107,7 @@
|
|
107
107
|
//全データの閲覧
|
108
108
|
void ListAll(InfoList list)
|
109
109
|
{
|
110
|
-
int ID;
|
111
|
-
for (ID = 1; ID <= SIZE; ID++) {
|
110
|
+
for (int ID = 1; ID <= SIZE; ID++) {
|
112
111
|
if (list[ID].name[0] == '\0') continue;
|
113
112
|
printf("------------------------------\n");
|
114
113
|
OutputInfo(list, ID);
|
2
説明変更
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
質問内容と
|
1
|
+
質問内容とちょっと違いますが、以下のように構造体の配列にすれば処理がスッキリしますよ。
|
2
2
|
|
3
3
|
```c
|
4
4
|
#include <stdio.h>
|
@@ -16,7 +16,7 @@
|
|
16
16
|
char tel[LENGTH];
|
17
17
|
} Info;
|
18
18
|
|
19
|
-
typedef Info InfoList[SIZE + 1]; // [1]~[SIZE], [0]は使わない
|
19
|
+
typedef Info InfoList[SIZE + 1]; // [1]~[SIZE]を使用, [0]は使わない
|
20
20
|
|
21
21
|
// IDの入力を関数化する
|
22
22
|
int InputID()
|
1
include修正
answer
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
質問内容とは違いますが、InfoList は Info の配列にすればスッキリ書けるのでは?
|
2
2
|
|
3
3
|
```c
|
4
|
-
#include <stdbool.h>
|
5
4
|
#include <stdio.h>
|
6
5
|
#include <stdlib.h>
|
6
|
+
#include <stdbool.h>
|
7
7
|
#include <string.h>
|
8
8
|
#define SIZE 100
|
9
9
|
#define LENGTH 500
|