回答編集履歴

2

ポインタで返す例

2023/03/06 07:45

投稿

int32_t
int32_t

スコア20884

test CHANGED
@@ -12,4 +12,22 @@
12
12
  return s;
13
13
  }
14
14
  ```
15
+ ----
15
16
 
17
+ ポインタで返すなら、メモリの動的確保などします。
18
+ ```c
19
+ ...
20
+ struct s_type* var2 = ps_s();
21
+ ...
22
+ free(var2);
23
+ ...
24
+
25
+ struct s_type* p_s()
26
+ {
27
+ struct s_type* s = (struct s_type*)malloc(sizeof(struct s_type));
28
+ s.i = 10;
29
+ s.d = 20.0;
30
+ return s;
31
+ }
32
+ ```
33
+

1

.

2023/03/06 07:35

投稿

int32_t
int32_t

スコア20884

test CHANGED
@@ -1,4 +1,4 @@
1
- 他の方もおっしゃっているように、関数の引数は関数の実行が終わると破棄されるので、引数のアドレスを返すことできません。
1
+ 他の方もおっしゃっているように、関数の引数は関数の実行が終わると破棄されるので、引数のアドレスを返していけません。
2
2
 
3
3
  コピーのコストが小さければ、構造体そのものを返すのが一番安全です。
4
4
  ```c