回答編集履歴

1

追記

2019/12/27 04:09

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -1,16 +1,26 @@
1
+ > 何がいけないのでしょうか?
2
+
3
+
4
+
5
+ 引数の`p`は`char *`型なので、`p`を変更しても呼び出し元へは変更した結果は戻りません。
6
+
7
+ 引数`char **p`として呼び出し元では、`A(&p)`としてアドレスを渡してください。
8
+
9
+
10
+
1
11
  こういう事?
2
12
 
3
13
 
4
14
 
5
15
  ```
6
16
 
7
- void foo(char* str){
17
+ void foo(char* p){
8
18
 
9
- char *p;
19
+ char *mem;
10
20
 
11
- p = (char *)malloc(sizeof(char)*100);
21
+ mem = (char *)malloc(sizeof(char)*100);
12
22
 
13
- str=p;
23
+ p=mem;
14
24
 
15
25
  }
16
26
 
@@ -46,13 +56,13 @@
46
56
 
47
57
  ```
48
58
 
49
- void foo(char** str){
59
+ void foo(char** p){
50
60
 
51
- char *p;
61
+ char *mem;
52
62
 
53
- p = (char *)malloc(sizeof(char)*100);
63
+ mem = (char *)malloc(sizeof(char)*100);
54
64
 
55
- *str=p;
65
+ *p=mem;
56
66
 
57
67
  }
58
68