回答編集履歴

1

実際のコード追加

2019/04/21 14:52

投稿

pepperleaf
pepperleaf

スコア6383

test CHANGED
@@ -15,3 +15,145 @@
15
15
  または、関数内で、malloc()等によるメモリ確保を行い、そのポインタを返す。
16
16
 
17
17
  (その場合、後始末が必要。しないとメモリリーク)
18
+
19
+
20
+
21
+ [追記]
22
+
23
+ 既に別の方の提示はありますが、、
24
+
25
+ 実際のコードを書いてみました。質問文にあったコードを元にと思ったら、結構、ややこしくなりました。
26
+
27
+
28
+
29
+
30
+
31
+ 呼び出し側で用意。
32
+
33
+ ```C
34
+
35
+ #include <stdio.h>
36
+
37
+
38
+
39
+ struct aaaTbl
40
+
41
+ {
42
+
43
+ char name[7];
44
+
45
+ char desc[20];
46
+
47
+ };
48
+
49
+
50
+
51
+ void search(char *bbb, struct aaaTbl *ccc);
52
+
53
+
54
+
55
+ //メイン関数
56
+
57
+ main()
58
+
59
+ {
60
+
61
+ char eee[] = "123abc";
62
+
63
+ struct aaaTbl bbb;
64
+
65
+
66
+
67
+ search(eee, &bbb);
68
+
69
+ printf("result : %s\n", bbb.desc);
70
+
71
+ }
72
+
73
+
74
+
75
+ void search(char *bbb, struct aaaTbl *ccc)
76
+
77
+ {
78
+
79
+ strcpy(ccc->name, "name");
80
+
81
+ strcpy(ccc->desc, bbb);
82
+
83
+ }
84
+
85
+ ```
86
+
87
+
88
+
89
+ malloc()使用
90
+
91
+ ```C
92
+
93
+ #include <stdio.h>
94
+
95
+ #include <memory.h>
96
+
97
+
98
+
99
+ struct aaaTbl
100
+
101
+ {
102
+
103
+ char name[7];
104
+
105
+ char desc[20];
106
+
107
+ };
108
+
109
+
110
+
111
+ struct aaaTbl *search(char *bbb);
112
+
113
+
114
+
115
+ //メイン関数
116
+
117
+ main()
118
+
119
+ {
120
+
121
+ char eee[] = "123abc";
122
+
123
+
124
+
125
+ struct aaaTbl *result = search(eee);
126
+
127
+
128
+
129
+ printf("result : %s\n", result->desc);
130
+
131
+ free(result);
132
+
133
+ }
134
+
135
+
136
+
137
+ struct aaaTbl *search(char *bbb)
138
+
139
+ {
140
+
141
+ struct aaaTbl *result = (struct aaaTbl *)malloc(sizeof(struct aaaTbl));
142
+
143
+
144
+
145
+ strcpy(result->name, "name");
146
+
147
+ strcpy(result->desc, bbb);
148
+
149
+
150
+
151
+ return result;
152
+
153
+ }
154
+
155
+ ```
156
+
157
+
158
+
159
+ `typedef` 使った方が、少しスッキリでした。