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

質問編集履歴

4

編集

2021/02/14 16:35

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -16,4 +16,18 @@
16
16
  では、補足になってしまい申し訳ないですが、
17
17
  例えば、*p は str[i]より、ループ三周目のアドレスの指す数値を知りたいときは
18
18
  if (i == 3){ printf("%d\n", str[3]);};と書けばいいのでしょうか?
19
- 仮に*p は str[i]よりよりprintf("%d\n", str[3]);の部分のstr[3]のように書くにはどう書けばいいのでしょうか?if (i == 3){ printf("%d\n", *p ==3);};でしょうか?
19
+ 仮に*p は str[i]よりよりprintf("%d\n", str[3]);の部分のstr[3]のように書くにはどう書けばいいのでしょうか?if (i == 3){ printf("%d\n", *p ==3);};でしょうか?
20
+
21
+ 編集2
22
+ エピスさんの解答より。
23
+ >>仮に&str[i]のアドレスを上げながらメモリに入った数値をそれぞれの値を+1したい場合は
24
+ どう書けばよいのでしょうか?
25
+
26
+ ++str[i++] または str[i++]++
27
+ for ( ... ;str[i]++, i++) の方が明快か。
28
+
29
+ に関して、アドレスの数値を上げるならば&は書かなくていいのでしょうか?要は
30
+ ++&str[i++] または &str[i++]++と書かなくて良いのでしょうか?
31
+ まあ、アドレスとアドレスの指すメモリに入る数値を同時にあげる書き方が
32
+ ++str[i++] または str[i++]++という決まりなら従うしかないですが。
33
+ &を付けてアドレスとアドレスの指すメモリに入る数値を同時にあげる書き方はないのでしょうか?

3

編集

2021/02/14 16:35

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -7,4 +7,13 @@
7
7
  では、ほかのポインタのアドレス(例えばアドレス2)のメモリの数値を上げたい場合は
8
8
  新しくstrA[i]と作り、
9
9
  for文で(*(&str))++と(*(&str A))++の二つを作ればよいのでしょうか?
10
- 出来ればプログラムを書いて頂けると理解しやすいです。
10
+ 出来ればプログラムを書いて頂けると理解しやすいです。
11
+
12
+ **編集**
13
+ エピスさんの解答に対する返事と補足に関して。
14
+ ってことは、iの数値を上げながら、iの入っているメモリのアドレスを上げるには
15
+ for (i=0;str[i]++, i++)と書けばいいのですね。
16
+ では、補足になってしまい申し訳ないですが、
17
+ 例えば、*p は str[i]より、ループ三周目のアドレスの指す数値を知りたいときは
18
+ if (i == 3){ printf("%d\n", str[3]);};と書けばいいのでしょうか?
19
+ 仮に*p は str[i]よりよりprintf("%d\n", str[3]);の部分のstr[3]のように書くにはどう書けばいいのでしょうか?if (i == 3){ printf("%d\n", *p ==3);};でしょうか?

2

編集

2021/02/14 16:16

投稿

carnage0216
carnage0216

スコア194

title CHANGED
@@ -1,1 +1,1 @@
1
- 変化つい教えてください。
1
+ ポインタ表すメモリの数値とメモリ入っている数値を同時にあげるには
body CHANGED
@@ -1,4 +1,10 @@
1
1
  ちなみに、for (i = 0; str[i] != 0; str[i++])のstr[i] != 0;は値がstr[i]に数値の0が入るまでstr[i++]、すなわち、&str[i]のアドレスの指定するメモリの数値を+1するという事でしょうか?
2
2
 
3
3
  仮に&str[i]自体のアドレスを+1して上げながらメモリに入った数値をそれぞれの&str[i]のアドレスのメモリに入った値を+1したい場合は
4
- どう書けばよいのでしょうか?
4
+ どう書けばよいのでしょうか?
5
+
6
+ あるいは、str[i]はポインタのアドレスが指すメモリに入る数値を表しますが、あるアドレス(例えばアドレス1)のメモリの数値しか上がりません。
7
+ では、ほかのポインタのアドレス(例えばアドレス2)のメモリの数値を上げたい場合は
8
+ 新しくstrA[i]と作り、
9
+ for文で(*(&str))++と(*(&str A))++の二つを作ればよいのでしょうか?
10
+ 出来ればプログラムを書いて頂けると理解しやすいです。

1

編集

2021/02/14 16:00

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
1
  ちなみに、for (i = 0; str[i] != 0; str[i++])のstr[i] != 0;は値がstr[i]に数値の0が入るまでstr[i++]、すなわち、&str[i]のアドレスの指定するメモリの数値を+1するという事でしょうか?
2
2
 
3
- 仮に&str[i]のアドレスを上げながらメモリに入った数値をそれぞれの値を+1したい場合は
3
+ 仮に&str[i]自体のアドレスを+1して上げながらメモリに入った数値をそれぞれの&str[i]のアドレスのメモリに入った値を+1したい場合は
4
4
  どう書けばよいのでしょうか?