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

回答編集履歴

2

内容追加

2019/08/18 12:33

投稿

thkana
thkana

スコア7735

answer CHANGED
@@ -18,4 +18,8 @@
18
18
 
19
19
  もう一つ言っておくと、Cではローカル変数(関数の{ }の中で宣言される変数)は掃除されません。ご存知かも知れませんが、変数というのはコンピュータのなかにたくさんある「メモリ」の一部を変数として使うよう確保したものです。ローカル変数においては、確保したときに、以前になにかに使っていたデータがそのまま残っています。意味のあるデータならまだマシで、長いデータの一部だったりとかそういうこともあり、ローカル変数の初期値つまり宣言した直後の値は不定(0だとか、0以外だとか、なにか特定の値の条件を期待してはいけない)です。
20
20
 
21
- それと、Cではポインタってやつがあって、一見上記と違う現象が起こっているように見えるかも知れませんが、騙されないように...
21
+ それと、Cではポインタってやつがあって、一見上記と違う現象が起こっているように見えるかも知れませんが、騙されないように...
22
+
23
+ (追記)
24
+ その点で紛らわしいものにマクロ、なんていうのもあるか。あれはまた普通のプログラムの記述とは全然違う動作原理なのでこういう説明では扱いにくい。
25
+ 質問者さんには例外的な部分はちょっと棚上げして、まず基本を抑えていただきたく。

1

誤記訂正

2019/08/18 12:33

投稿

thkana
thkana

スコア7735

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  ` b=func(a);`
3
3
  とすることで、bがfunc(a)と結び付けられる(束縛される)というイメージで捉えてしまったのではないでしょうか。そういう動作をすることになっている言語もあるかも知れませんが、C言語はそうではありません。決して少なくない割合でそういう誤解をしてしまう方をみかけます。
4
4
 
5
- Cでの'=' 代入は、その時点での辺の値を辺にコピーするだけです。
5
+ Cでの'=' 代入は、その時点での辺の値を辺にコピーするだけです。
6
6
 
7
7
  ```
8
8
  #include <stdio.h>