teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2022/01/11 01:29

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -34,4 +34,21 @@
34
34
  }
35
35
  printf("\n PC[1]=%7.3f\n", PC[1]);
36
36
  }
37
+ ```
38
+ [追記-2] いっそコレ↓でよくね?
39
+ ```C++
40
+ #include <cstdio>
41
+
42
+ int main() {
43
+ double pcs[2][5]{ 0, 1, 2, 3, 4,
44
+ 5, 6, 7, 8, 9 };
45
+ double* PC;
46
+ int N = 0;
47
+ if (N == 1) {
48
+ PC = pcs[0];
49
+ } else {
50
+ PC = pcs[1];
51
+ }
52
+ printf("\n PC[1]=%7.3f\n", PC[1]);
53
+ }
37
54
  ```

1

追記

2022/01/11 01:29

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -15,4 +15,23 @@
15
15
 
16
16
  ...なんかできたっポいけど、実はこれもやっちゃダメ。
17
17
  double pc[5] は {} の外に出ると寿命が尽きてしまいます。
18
- 死んでしまう変数のポインタ値をアテにしてはいかんのです。
18
+ 死んでしまう変数のポインタ値をアテにしてはいかんのです。
19
+
20
+ [追記] これ↓ならOK (staticなのがミソ)
21
+ ```C++
22
+ #include <cstdio>
23
+ #include <cstdlib>
24
+
25
+ int main() {
26
+ double* PC;
27
+ int N = 1;
28
+ if (N == 1) {
29
+ static double pc[5]{ 1, 0.885, 0.826, 0.794, 0.775 };
30
+ PC = pc;
31
+ } else {
32
+ static double pc[5]{ 1, 0.588, 0.826, 0.794, 0.775 };
33
+ PC = pc;
34
+ }
35
+ printf("\n PC[1]=%7.3f\n", PC[1]);
36
+ }
37
+ ```