関数に渡すダブルポインタにデータを挿入した場合のソースコード(上)は、上手くmain関数からデータを参照できるのですが、
関数に渡す引数が、シングルポインタの場合のソースコード(下)は、実行できるのですが、1~10が出力されるのではなく、変な数字ができます。
これはなぜなのでしょうか?
C言語
1#include <stdio.h> 2#include <malloc.h> 3 4void setData(int** data, int size); 5 6int main(void) { 7 int* data; 8 setData(&data, 10); 9 for (int i=0; i<10; i++) { 10 printf("%d\n", data[i])); 11 } 12} 13 14void setData(int** data, int size) { 15 *data = (int*)malloc(sizeof(int) * size); 16 for (int i=0; i<size; i++) { 17 (*data)[i] = i+1; 18 } 19} 20
C言語
1#include <stdio.h> 2#include <malloc.h> 3 4void setData(int* data, int size); 5 6int main(void) { 7 int* data; 8 setData(data, 10); 9 for (int i=0; i<10; i++) { 10 printf("%d\n", data[i]); 11 } 12} 13 14void setData(int* data, int size) { 15 data = (int*)malloc(sizeof(int) * size); 16 for (int i=0; i<size; i++) { 17 data[i] = i+1; 18 } 19}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/17 11:38
2018/06/17 11:39
2018/06/17 11:40
2018/06/17 11:44
2018/06/17 11:48
2018/06/17 11:50
2018/06/17 11:54
2018/06/17 12:16