🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

4回答

2827閲覧

ポインタの表すメモリの数値とメモリに入っている数値を同時にあげるには。

carnage0216

総合スコア194

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/02/14 15:28

編集2021/02/14 16:35

ちなみに、for (i = 0; str[i] != 0; str[i++])のstr[i] != 0;は値がstr[i]に数値の0が入るまでstr[i++]、すなわち、&str[i]のアドレスの指定するメモリの数値を+1するという事でしょうか?

仮に&str[i]自体のアドレスを+1して上げながらメモリに入った数値をそれぞれの&str[i]のアドレスのメモリに入った値を+1したい場合は
どう書けばよいのでしょうか?

あるいは、str[i]はポインタのアドレスが指すメモリに入る数値を表しますが、あるアドレス(例えばアドレス1)のメモリの数値しか上がりません。
では、ほかのポインタのアドレス(例えばアドレス2)のメモリの数値を上げたい場合は
新しくstrA[i]と作り、
for文で((&str))++と((&str A))++の二つを作ればよいのでしょうか?
出来ればプログラムを書いて頂けると理解しやすいです。

編集
エピスさんの解答に対する返事と補足に関して。
ってことは、iの数値を上げながら、iの入っているメモリのアドレスを上げるには
for (i=0;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);};でしょうか?

編集2
エピスさんの解答より。
>>仮に&str[i]のアドレスを上げながらメモリに入った数値をそれぞれの値を+1したい場合は
どう書けばよいのでしょうか?

++str[i++] または str[i++]++
for ( ... ;str[i]++, i++) の方が明快か。

に関して、アドレスの数値を上げるならば&は書かなくていいのでしょうか?要は
++&str[i++] または &str[i++]++と書かなくて良いのでしょうか?
まあ、アドレスとアドレスの指すメモリに入る数値を同時にあげる書き方が
++str[i++] または str[i++]++という決まりなら従うしかないですが。
&を付けてアドレスとアドレスの指すメモリに入る数値を同時にあげる書き方はないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/02/14 15:33

str[i++] で ++ してるのは i です。
carnage0216

2021/02/14 16:02

ありがとうございます。
kazuma-s

2021/02/14 17:15

質問のタイトルが変更されて、ポインタという用語が入っていますが、 質問内容にポインタを使ったコードが示されていないので、 何をしたいのかがさっぱり分かりません。
退会済みユーザー

退会済みユーザー

2021/02/15 00:47 編集

コードで考える前に、使っている変数とその中身を図に書いて考えてみた方がいいですよ。
carnage0216

2021/02/15 02:01

図を描くにも、混乱して図がうまく描けないのです。すいません
退会済みユーザー

退会済みユーザー

2021/02/15 02:12

自分ですらイメージ出来ないのに、それを他人に伝えるのは無理でしょう。
hoshi-takanori

2021/02/15 02:21

そもそも、質問の目的は次のどれですか? ・何か作りたいプログラムがあって、それをうまく書くためにこの質問の答えが必要である ・他人が書いたソースコードにそのような書き方が出てきたので、それがどういう意味なのか知りたい ・C 言語の言語仕様やコンパイラの挙動、あるいは計算機の仕組みを探究する上でこの質問が出てきた ・その他
carnage0216

2021/02/15 02:26

・他人が書いたソースコードにそのような書き方が出てきたので、それがどういう意味なのか知りた が近いです。 ただ二問目の質問がよくわかりません。 二つ目の疑問については、なぜポインタのアドレス&str[i]とポインタの指すアドレスの中身のメモリに入っている変数iの数値を繰り上げるのに、 ++str[i++] または str[i++]++と&が付かず、 要は++&str[i++] または &str[i++]++という書き方ではないのか全く分からないのです。 なぜなら、str[i++] だけではポインタの指すアドレスの中身のメモリに入っている変数iの数値しか変わらないのでは?と思ったためです。
退会済みユーザー

退会済みユーザー

2021/02/15 02:59 編集

そもそもただの配列のシーケンシャルアクセスしてるだけで、ポインタ出てきてないですよね。
guest

回答4

0

ますますすごい。質問が取っ散らかって迷走・混迷がさら深まってる。何をしたいのかわからないし、何をわかってるのかもあやしい。何年か経ったけど、ひとつひとつが不正確なまま。思い込みでおかしなイメージを描いてる様子もある。耳年増という言葉を思い出した。何かまともに動かすなど絶望的状況なのに、分かりたいし動かしたい・・・不憫だね。

ポインタの表すメモリの数値とメモリに入っている数値を同時にあげるには

同時と言うんだから、なにやらAとB、2つやりたいことがあって、それをひとつの書き方にしたいのかなあ。面倒しなくても、たとえば { A; B; } とでもすればよいのだけど、そもそもAとBが何なのか、それが本当にやるべきことなのかもわからない。質問の文章がヘンだし、彼が前提として理解してるらしいこともいろいろヘンで、それを質してたらきりが無い。彼の意図や疑問に沿った文章になってるかも甚だ疑問だ。このサイトで、文章で、コミュニケーション取るのは難しい思う。それでも彼の質問に真摯に向き合おうとしているカズマさんやエピステーメーさんたちには頭が下がる。私はずいぶん前に手に負えないと思ったから。「ごめん、なに言ってるのかわからない。唐突に出てきた *p ってなんですか?」に拍手しちゃったよ。質問があっちゃこっちゃ拡散するのは、彼の資質では仕方がないだろうが、それじゃ答える方はたまらない。

大虐殺君、リアルタイムで相談できる相手はまだ見つかってないんだろ?プライベートにコンタクトを、と書いたのは、ここで回答依頼しろということではないんだ。ここで通常のレベルでお相手するのは面倒すぎるので、ここでなく、違う手段で、つまり電話とかzoomとかで話してみたいってこと。私の中では困ってる人をほっとけないという気持ちもあるが、怖いもの見たさが勝ってる。

投稿2021/02/15 00:23

rubato6809

総合スコア1382

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/02/15 01:54

低評価の理由:何らかの感想的な内容であり,「回答」ではないと見えたため.
carnage0216

2021/02/15 02:15 編集

ありがとうございます。今フォローしました。 アカウントは@OnslaughtAです。
guest

0

Visual Studio を使っているんですよね。
main にブレークポイントを置き、デバッグ実行を開始し、
ステップ実行をしながら、変数の値を見ることができます。
ステップ実行のやり方が分からないのですか?
変数の値の見方が分からないのですか?

それから、ポインタを使っていないプログラムでアドレスという用語は、
混乱のもとになるから、使わないほうがよいと思います。

コンピュータは CPU とメモリを持っていて、機械語では、
すべてのデータをメモリのアドレスで参照します。
しかし、これではプログラミングが非常に面倒なので、
アセンブリ言語が使われるようになり、
さらに C などの高級言語が使われるようになりました。
もうアドレスは使わず、変数でメモリ中のデータを参照します。

仮に&str[i]自体のアドレスを

str も i も変数です。
str[i] はメモリ中のデータで、値を持っていますが、
そのデータを書き換えできますから、変数と同じです。
str[i] はメモリ中のデータなので、
メモリ中のどの位置かを示す値、すなわちアドレスがあります。
そのアドレスを取得する演算子が & です。
&str[i] は str[i] のアドレスです。
アドレスということは値です。
値にはアドレスはありません。
「str[i] のアドレス」という表現はありますが、
「&str[i] のアドレス」という表現はおかしいのです。
&str[i] がアドレスですから、
「&str[i]自体のアドレス」とは「str[i] のアドレス自体のアドレス」となって変です。

理解できますか?

追記

&str[i]はポインタstr[i]の指すメモリに入る数値、str[i]はメモリに入る数値だと理解できています。

char str[4] = "abc"; と宣言されていたとすると、
str[i] は、配列 str の i番目の要素で、型は char。

ここで、str[0] = 'e'; と書くことができます。
carnage0216さんの理解しているように str[i] が数値なら、
'a' = 'e' となりますよね。
しかし、値に値は代入できません。
str[i] は値ではないのです。
str[i] は変数と同じものなのです。
変数には値を代入できます。

変数は、次の 2 つの性質があります。

  1. 値を持つ。
  2. 値を変更できる。

str[i] は変数(と同じもの)なのです。
carnage0216さんは、1 の性質しか理解していなくて、
str[i] を数値だと言っているのです。
それは間違いです。

&str[i]はポインタstr[i]の指すメモリに入る数値、

「ポインタstr[i]」が間違い。
str[i] はポインタではありません。char型の変数です。
変数ですから、メモリ中にあり、アドレスが決まっています。
&str[i] は、変数str[i] のアドレスです。
アドレスだから、値です。
数値と言ってもいいかもしれませんが、
int や double とは違いますから、単に「値」と言いましょう。
とにかく、&str[i] は、「変数str[i] のアドレス」だと理解しましょう。

投稿2021/02/14 16:16

編集2021/02/14 16:53
kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2021/02/14 16:20

こんなこと言いたくないですが、デバッグを掛けています。 ですが、頭の出来が良くないので、結果を見てもいまいちわからないのです。 ですが、カズマさんのおかげで、 &str[i]はポインタstr[i]の指すメモリに入る数値、str[i]はメモリに入る数値だと理解できています。 伝え方が下手なので理解できていないように見えますが、少しは理解できています。
kazuma-s

2021/02/14 16:24

> &str[i]はポインタstr[i]の指すメモリに入る数値、str[i]はメモリに入る数値だと理解できています。 違う。全然違う。全く理解されていない。 回答を書いているうちに質問が編集されてしまったようですが、 私の回答にはそんなことは書いていません。 しばらくしたら、何が全然違うのかを回答に追記します。
carnage0216

2021/02/14 16:29

いつもいつも面目ないです。本当にすいません。
carnage0216

2021/02/14 16:36

出来れば編集した質問に答えて頂けるとありがたいです。
kazuma-s

2021/02/14 17:12 編集

答ええようにも編集内容が意味不明で答えられません。 「for (i=0;str[i]++, i++)と書けばいいのですね。」 for文の構文エラーです。 「*p」がいきなり出てきますが、これは何ですか? 「編集2」も意味不明。 とにかく、私の回答を 1行ずつ理解しながら読んでください。 どの部分に疑問点がありますか?
carnage0216

2021/02/14 17:31

すいません。 str[i] は変数で、変数strが持つ変数がiということでしょうか? また >>仮に&str[i]のアドレスを上げながらメモリに入った数値をそれぞれの値を+1したい場合は どう書けばよいのでしょうか? ++str[i++] または str[i++]++ for ( ... ;str[i]++, i++) の方が明快か。 に関してはなぜアドレスを上げるのに++&str[i++] または &str[i++]++と書かないのかわからないのです。だってアドレスを表すには&という演算子が必要じゃないですか。
kazuma-s

2021/02/14 18:05

> str[i] は変数で、変数strが持つ変数がiということでしょうか? 違います。 str は変数。i は変数。2つの変数は無関係。str は i を持っていません。 添字演算子 [] によって、str の値と、i の値で演算が行われ、 演算結果の str[i] が変数(と同じもの)になります。 >>仮に&str[i]のアドレスを上げながらメモリに入った数値をそれぞれの値を+1したい場合は どう書けばよいのでしょうか? str という配列と、i という添字を使うのなら、アドレスもメモリも意識する必要はありません。 str[i] という変数の値を 1増やしたいなら、str[i]++ または ++str[i] または str[i] += 1。 i という変数の値を 1増やしたいなら、i++ または ++i または i += 1。 同時に行いたいのなら、str[i++]++ または ++str[i++] と書けばよい。 ++&str[i++] はコンパイルエラー。 演算子の優先順位から、これは ++(&str[i++]) であり、 ++ のオペランドは変数でなければならないのに、 オペランドの &str[i++]はアドレスであり、 アドレスは値であるから、それは変数ではありません。 &str[i++]++ はコンパイルエラー。 演算子の優先順位から、これは &(str[i++]++) であり、 & のオペランドは変数でなければならないのに、 オペランドの str[i++]++ は 1増えた char の値であり、 それは変数ではありません。 「メモリに入った数値」とは「変数の値」ですよね。 それを +1 したいのなら、変数が i なら i++。変数が str[i] なら str[i]++。 str[i] は変数であり、その str[i] のアドレスを +1 したいのなら、 &str[i] + 1 が +1 した値ですが、 その値を char *p; で宣言されたポインタ変数 p に入れないと値の使い道がありません。
carnage0216

2021/02/15 20:44 編集

もし、アドレスもメモリも意識してstr[i++]++ または ++str[i++] を使ってプログラムを作るとしたらどのようにプログラムを描けばいいのでしょうか?
carnage0216

2021/02/16 00:13

仮に&str[i]自体のアドレスを+1して上げながらメモリに入った数値をそれぞれの&str[i]のアドレスのメモリに入った値を+1したい場合は どう書けばよいのでしょうか? について、 ++str[i++]; &str[i];と書いてはだめですか?
kazuma-s

2021/02/16 06:13

用語の意味を理解していない人に何を説明しても無駄だと分かりました。 次の用語の意味を説明できますか? 型、変数、値、アドレス、ポインタ、配列、文字列、定数、演算子、オペランド、式、文、関数、宣言、初期化、代入。
guest

0

str[5] というのがあったとします。
strという名前の配列です。
その大きさは5です。
アドレスは0~4です。
strには{0, 4, 3, 1, 2}という値が入っていたとします。
for文を作ってみます。

C++

1for(int address=0; address<5; ++address){ 2 //ここで何か処理をする。 3 //例えばaddress番目の値を+1する 4 ++str[address]; 5}

strは{1, 5, 4, 2, 3} になります。

元に戻します。
strには{0, 4, 3, 1, 2}が入っています。
値が0でなければ+1したいと思います。
for文を作ってみます。

C++

1for(int address=0; address<5; ++address){ 2 // address番目の値が0でないなら 3 if(str[address]!=0){ 4 //address番目の値を+1する 5 ++str[address]; 6 } 7}

strの中身は{0, 5, 4, 2, 3}になります。
これでアドレスと中身を同時に+1できました。

※コードが正しいかは確認していません。
また一部適切でない表現がありますが簡単のためご容赦ください。

投稿2021/02/16 07:28

cleaner

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/02/16 07:32

> また一部適切でない表現がありますが簡単のためご容赦ください。 混乱の種を増やすだけです。
fana

2021/02/16 07:33

> 一部適切でない表現がありますが とのことですが,「アドレス」という言葉を別の意味で用いてしまうと,余計な混乱を生じそうに思えます.
carnage0216

2021/02/16 07:41

ご親切にどうもありがとうございます!
cleaner

2021/02/16 07:50

疑問の解決はしてないのでしょうか? その場合何が違うのかご指摘をお願いします。
Zuishin

2021/02/16 07:51

逆にこの回答で何が解決すると思うの?
cleaner

2021/02/16 07:54

それは質問者さんに確認しているところなのでお待ちください。 私の意見としては質問者さんのいうアドレスと皆さんのいうアドレスが噛み合ってなさそうだったのて、アドレス=インデックスと解釈して回答しました。 もし、それで正しかったら質問文を訂正してもらうよう質問者さんにお願いします。
Zuishin

2021/02/16 07:55

ややこしくなるので、この質問者の質問を新しい方から最低 5 つ読んでからもう一度自分の回答を見直してください。そうすれば意味が分かります。
guest

0

for (i = 0; str[i] != 0; str[i++])のstr[i] != 0;は値がstr[i]に数値の0が入るまでstr[i++]、すなわち、&str[i]のアドレスの指定するメモリの数値を+1するという事でしょうか?

ちがいます。
str[i++] では 配列str[]の内容を書き換えることはできません。
+1されるのは i であり、str[i] ではありません。

仮に&str[i]のアドレスを上げながらメモリに入った数値をそれぞれの値を+1したい場合は

どう書けばよいのでしょうか?

++str[i++] または str[i++]++
for ( ... ;str[i]++, i++) の方が明快か。

投稿2021/02/14 15:39

編集2021/02/14 15:42
episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2021/02/14 16:02

なるほど、勉強になります。
carnage0216

2021/02/14 16:14 編集

ってことは、iの数値を上げながら、iの入っているメモリのアドレスを上げるには for (i=0;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);};でしょうか?
carnage0216

2021/02/14 16:31

あの >>仮に&str[i]のアドレスを上げながらメモリに入った数値をそれぞれの値を+1したい場合は どう書けばよいのでしょうか? ++str[i++] または str[i++]++ for ( ... ;str[i]++, i++) の方が明快か。 に関して、アドレスの数値を上げるならば&は書かなくていいのでしょうか?要は ++&str[i++] または &str[i++]++と書かなくて良いのでしょうか? まあ、アドレスとアドレスの指すメモリに入る数値を同時にあげる書き方が ++str[i++] または str[i++]++という決まりなら従うしかないですが。
carnage0216

2021/02/14 16:35

&を付けてアドレスとアドレスの指すメモリに入る数値を同時にあげる書き方はないのでしょうか?
episteme

2021/02/14 17:32

ごめん、なに言ってるのかわからない。 唐突に出てきた *p ってなんですか? 質問にあった for (i = 0; str[i] != 0; str[i++]) に、 ポインタ/アドレスを気にする個所はひとつもありません。 「str[i] は配列 str[]のi番目」とだけ理解すればそれで充分では?
carnage0216

2021/02/14 17:40

確かにそうなのですが。。。 ただ ++str[i++] または str[i++]++ for ( ... ;str[i]++, i++) の方が明快か。 に関してはなぜアドレスを上げるのに++&str[i++] または &str[i++]++と書かないのかわからないのです。だってアドレスを表すには&という演算子が必要じゃないですか。
episteme

2021/02/15 01:35 編集

あなたのいう「アドレスを上げる」に相当するのは i++ です。str[i]++ではありません。 で、唐突に出てきた *p ってなんですか? あと 「ちなみに」とは、何に ちなんでいる のですか? # ちなみ‐に【 因みに】の解説. [接] 前に述べた事柄に、あとから簡単な補足などを付け加えるときに用いる。
carnage0216

2021/02/16 00:09

なるほど、 仮に&str[i]自体のアドレスを+1して上げながらメモリに入った数値をそれぞれの&str[i]のアドレスのメモリに入った値を+1したい場合は どう書けばよいのでしょうか? について、 ++str[i++]; &str[i];と書いてはだめですか?
episteme

2021/02/16 01:11

> ++str[i++]; これはいいとして、 > &str[i]; これはなにをしてるんですか?
carnage0216

2021/02/16 01:18 編集

&str[i];は単純にstr[i]のアドレスを+1していくためのものです。 ++str[i++];でiを++していき、 &str[0]; &str[1]; &str[2]; &str[3]; &str[4];...と上げるために書きました。 元のアドレスに+1してアドレスをずらすような感じです。
episteme

2021/02/16 01:23 編集

> &str[i];は単純にstr[i]のアドレスを+1していくためのものです &str[i]; のどこに +1 する効果がありますか? (答:ありません)
episteme

2021/02/16 01:31

++str[i++]; これをふたつにわけるなら ++str[i]; i++; って何回繰り返せばわかっていただけるのでしょうか。
fana

2021/02/16 01:56

Operator & means "address of". e.g. "&X" is "address of X". Therefore, "&str[i]" is "adress of str[i]". There are no other operations in this sentence. You say just "adress of str[i]", and nothing will be incremented.
carnage0216

2021/02/16 06:33 編集

やっとわかりました。 なるほど、++str[i++]; が&str[i]自体のアドレスを+1して上げながらメモリに入った数値をそれぞれの&str[i]のアドレスのメモリに入った値を+1したい場合の書き方なのですね。
carnage0216

2021/02/16 06:40

++str[i]; i++;だとしても++str[i];の++は必要ですか? i++でstr[0],str[1],str[2]...とアドレスが上がっていくのでstr[i]; i++;だめでいいのでは?と思っています。
Zuishin

2021/02/16 06:41

何がわかったんだろう。
episteme

2021/02/16 06:56 編集

それ、試したうえで質問してますか? 「~と思っています」が正しいか、検証することを習慣化していますか? > str[i]; i++; str[i] はなにをしているんですか?
carnage0216

2021/02/16 07:02

#include <stdio.h> int main(void) { char str[] = "123456789"; int i = 0; for (i = 0; i <= 8;++i) { ++str[i]; printf("str[%d]=%p\n", i,&str[i]); } } 結果は以下です。 str[0]=000000B2659FF850 str[1]=000000B2659FF851 str[2]=000000B2659FF852 str[3]=000000B2659FF853 str[4]=000000B2659FF854 str[5]=000000B2659FF855 str[6]=000000B2659FF856 str[7]=000000B2659FF857 str[8]=000000B2659FF858
episteme

2021/02/16 07:08 編集

で、あなたは 上記コードの ++str[i] を str[i] に書き換えても同じ結果が得られると思っているのですよね? 検証しましたか?
carnage0216

2021/02/16 07:09

一応、期待した通りの動きなので、これでいいと思ってます。
episteme

2021/02/16 07:19 編集

え? そのコード ++str[i] してますよ? あなたは 上記コードの ++str[i] を str[i] に書き換えても同じ結果が得られると思っているのですよね? アドレス(&str[i])は確かに+1されていますが、もうひとつ、str[i]も+1されることを期待してますよね? それを検証していませんよ。++str[i] を str[i]に置き換え、 printf("str[%d]=%p : %c\n", i,&str[i], str[i]); すればいいんじゃないですか? どんな結果が得られましたか? あなたの思いが正しいなら、2, 3, 4... が得られるはずです。
carnage0216

2021/02/16 07:20

str[0]=0000006C158FF760 str[0]=0000006C158FF760 : 1 str[1]=0000006C158FF761 str[1]=0000006C158FF761 : 2 str[2]=0000006C158FF762 str[2]=0000006C158FF762 : 3 str[3]=0000006C158FF763 str[3]=0000006C158FF763 : 4 str[4]=0000006C158FF764 str[4]=0000006C158FF764 : 5 str[5]=0000006C158FF765 str[5]=0000006C158FF765 : 6 str[6]=0000006C158FF766 str[6]=0000006C158FF766 : 7 str[7]=0000006C158FF767 str[7]=0000006C158FF767 : 8 str[8]=0000006C158FF768 str[8]=0000006C158FF768 : 9
carnage0216

2021/02/16 07:21

私はiとstr[i]の「アドレス」の+1されるのが見たかったのです。
episteme

2021/02/16 07:22

str[i]も+1されることを期待してますよね? ところが期待通りの結果が得られていませんね。
episteme

2021/02/16 07:26

> ++str[i]; i++;だとしても++str[i];の++は必要ですか? とあなたは問いました。 答: 必要です。そうしないと "123..." が "234..." に書き換わりません。
carnage0216

2021/02/16 07:39

あの、だからstr[i]の「アドレス」を+1したかっただけなの、後str[i]に含まれるiが繰り上がればいいと望んでいたんだよ。 >>str[i]も+1されることを期待してますよね? ところが期待通りの結果が得られていませんね。 なんか私が自分でコードを完成させたことを妬むのはいいですけど、ここで喧嘩売るのは辞めてください。 いい大人が恥ずかしいですよ。本人が満足してるんだからそれいいんだって。私よりも日本語がやばいのでは? > ++str[i]; i++;だとしても++str[i];の++は必要ですか? とあなたは問いました。 それは言葉足らずだったね。ごめんさない。今は「私はiとstr[i]の「アドレス」の+1されるのが見たかったのです。」なんですよ。 マジでこういう会話疲れるからほんと来てほしくないんだよな。気分悪くなるわ。人にリアルで嫌なことして、ネットでもストーカーとかマジ勘弁ですわ。冗談抜きで来ないでほしい。
carnage0216

2021/02/16 07:40

ん?そうしないと "123..." が "234..." に書き換わりません。 ってなんの数値のことを言っているんだ!? 主語がないと伝わらないよお!
episteme

2021/02/16 07:41

あのねー...言葉の足りてない不完全な質問にマジメに答えたらその態度?
episteme

2021/02/16 07:43

> ん?そうしないと "123..." が "234..." に書き換わりません。 > ってなんの数値のことを言っているんだ!? char str[] = "123456789"; あなたコードにこう書いてる。
Zuishin

2021/02/16 07:47

> 仮に&str[i]のアドレスを上げながらメモリに入った数値をそれぞれの値を+1したい場合は どう書けばよいのでしょうか? 「メモリに入った数値」というのが何のことかわからない。言葉を覚えてから質問しなさい。
episteme

2021/02/16 07:55

kazuma-s氏いわく:「用語の意味を理解していない人に何を説明しても無駄だと分かりました。」 ホントそれ。 加えて「オレサマ独自用語を使うな」 "&str[i]のアドレス~"からして読み手を混乱させる。&&str[i] ってなによ? 誤解の素。 せめて "str[i]のアドレス(&str[i])~" と表現しなさい。
carnage0216

2021/02/16 09:26

はい。なんやかんやで優しいエピスさん。
Zuishin

2021/02/16 09:32

普通は見放す。私は見放した。 > メモリに入った数値をそれぞれの値を+1したい場合は という質問で > ++str[i]; i++;だとしても++str[i];の++は必要ですか? とか > なんの数値のことを言っているんだ!? とか言い始めるようなのに教えることなど不可能。 やっとわかりましたがきいて呆れる。
episteme

2021/02/16 09:44

専属メンターが付いたみたいだし、しばし傍観しましょかね...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問