せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Tuesday, 18-Sep-2018 20:15:27 JST
-
今日詰まったこと。
C言語の引数のアドレスを変更できなかった。こんな感じで,引数に渡したポインターに別のポインターを渡して,出力結果を渡そうとしたのだけど,だめだった。memcpyしたらいけたのだけど。なぜダメなのかがわからなかった。アドレスを書き換えたらダメなんだったたっけ?いや,でも引数にポインターを渡してそれを書き換えるというのはよくやるだろう?なぜだろう。
```
#include <stdio.h>
#include <string.h>
struct st {
int a;
int b;
};
struct st stg = {1, 2};
void init( struct st *str) {
str = NULL;
printf("%d, %d\n", stg.a, stg.b );
// memcpy(str, &stg, sizeof(stg));
str = &stg
}
int main(void) {
struct st st1 = {0};
printf("%d\n", st1.a);
init( &st1 );
printf("%d\n", st1.a);
return 0;
}
```