![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
仮に&str[i]のアドレスを上げながらメモリに入った数値をそれぞれの値を+1したい場合は
どう書けばよいのでしょうか?
++str[i++] または str[i++]++
for ( ... ;str[i]++, i++) の方が明快か。
と解答を頂いたのですが、
補足になってしまい申し訳ないですが、
例えば、*p は str[i]より、ループ三周目のアドレスの指す数値を知りたいときは
if (i == 3){ printf("%d\n", str[3]);};と書けばいいのでしょうか?
仮に*p は str[i]よりよりprintf("%d\n", str[3]);の部分のstr[3]のように書くにはどう書けばいいのでしょうか?if (i == 3){ printf("%d\n", *p ==3);};でしょうか?
もう一つ、「仮に&str[i]のアドレスを上げながらメモリに入った数値をそれぞれの値を+1したい場合は
どう書けばよいのでしょうか?
++str[i++] または str[i++]++
for ( ... ;str[i]++, i++) の方が明快か。と言われたのですが、
アドレスとアドレスの指すメモリの数値を上げるならば、++str[i++] または str[i++]++に&を付けてアドレスとアドレスの指すメモリに入る数値を同時にあげる書き方はないのでしょうか?(なぜ&をつけていないのにアドレスも上がるのか疑問です。)
要は++&str[i++] または &str[i++]++という書き方はないのでしょうか?
ただ、アドレスを上げながらアドレスの指すメモリに入った数値を上げる書き方が
++str[i++] または str[i++]++と決まっているならば従うしかないですが。
No.1ベストアンサー
- 回答日時:
>ループ三周目のアドレスの指す数値を知りたいときは
>if (i == 3){ printf("%d\n", str[3]);};と書けばいいのでしょうか?
ループ一周目のときはi=0なので、ループ三周目のときはi=2のはず。
if (i == 2) printf("%d\n", str[2]);
この場合、str[2]はstr[i]でも可。
>printf("%d\n", str[3]);の部分のstr[3]のように書くにはどう書けばいいのでしょうか?
p = &str[0];の条件で間違いないなら、
if (i == 2) printf("%d\n", *(p+2));
p+2のアドレスは &str[2]と同一。
>アドレスを上げながらアドレスの指すメモリに入った数値を上げる書き方が
>++str[i++] または str[i++]++と決まっているならば従うしかないですが。
配列の数値の参照なので、従ってください。
&str[i] と書くのは、関数の引数がアドレスを要求している場合や、ポインタにアドレスを代入するときくらい。
(例)
p = &str[0];
printf("%p\n", &str[2]); /* str[2]のアドレス表示 */
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- C言語・C++・C# C# 浮動小数の数値文字列化 1 2022/04/18 15:15
- Visual Basic(VBA) VBA ユーザーフォームからSubプロージャ―に値を引き渡す方法 3 2023/04/09 01:54
- その他(プログラミング・Web制作) 物理の斜方投射で目盛りに数値を入れたい 2 2023/05/27 06:32
- C言語・C++・C# C言語の質問です HTMLでこのようなコードを書いたのですがそれをC言語で同じように書きたいです < 1 2022/08/11 23:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語のポインタへの文字列入力...
-
newしないオブジェクトについて
-
64ビットと32ビットの違い
-
大容量の静的な確保の限界値
-
callocの処理速度
-
GDI+におけるメモリの開放について
-
newでrealloc?
-
malloc呼び出し時のセグメンテ...
-
構造体でchar name[]と*nameの...
-
allocってなんですか?
-
プログラムが途中で強制終了し...
-
C++のnewで確保したメモリーの...
-
fread関数および動的なメモリ確...
-
画像を読み込む配列の確保。
-
void*型のデータサイズ
-
ビットをローテートするプログ...
-
アンマネージド関数でのメモリ...
-
C++で、メンバもヒープに確保さ...
-
MSDNがgethostbynameではなくge...
-
配列の添え字の最大数とは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語のポインタへの文字列入力...
-
allocってなんですか?
-
newしないオブジェクトについて
-
mallocについて
-
配列の添え字の最大数とは?
-
ヒープメモリの解放について
-
ビットをローテートするプログ...
-
C++で、メンバもヒープに確保さ...
-
malloc呼び出し時のセグメンテ...
-
プログラムが途中で強制終了し...
-
指定したメモリアドレスの値の...
-
スタック破壊の上手な見つけ方...
-
void*型のデータサイズ
-
ポインタのポインタの初期化法
-
free関数で動作が止まる
-
callocの処理速度
-
MSDNがgethostbynameではなくge...
-
C++のnewで確保したメモリーの...
-
sprintf()の使い方について
-
Accessで、メモリを開放するタ...
おすすめ情報