プロが教える店舗&オフィスのセキュリティ対策術

c言語のポインタについて

numの値は変えていないのになぜ2回目のプリントで24になっているのですか?

*ptr = &num で23がptrの値の部分に代入されたのはわかります。しかしnumは何も変更していないですよね?

「c言語のポインタについて numの値は変」の質問画像

A 回答 (6件)

ポインタを経由して num の値を変えてるじゃん.

    • good
    • 1
この回答へのお礼

そのこころは?

お礼日時:2022/03/10 01:03

3行目:変数numの「アドレス(=メモリ上の格納場所)」を、int型のポインタ ptrに代入。


4行目:ポインタ ptrが指し示す「アドレス」
(=変数numの場所)に入ってる値を表示。
5行目:変数numに入ってる値を表示。

★6行目:ポインタ ptrが指し示す「アドレス」
(=変数numの場所)に入ってる値を24にする。

7行目:変数numに入ってる値を表示。
8行目:ポインタ ptrが指し示す「アドレス」
(=変数numの場所)に入ってる値を表示。
    • good
    • 0
この回答へのお礼

行数がわからないです。

お礼日時:2022/03/10 02:38

>*ptr = &num で23がptrの値の部分に代入されたのはわかります。


ここが解っていない証拠ですね。
&の意味を勉強しよう。
    • good
    • 2

CPPでは、変数名を使っても、その変数のメモリ上の位置を示すポインタを使っても、変数を扱うことができます。


int num = 23;//変数名を使った代入命令
printf(num);//変数名を使った表示命令

int *ptr = #//numのメモリ上の位置を示すポインタを定義
*ptr = 24;//ポインタを使った代入命令
printf(*ptr);//ポインタを使った表示命令
でしょうか。
    • good
    • 0

2行目の


int *ptr = #
は*ptrに代入しているのではなく、ptrに代入されている。

宣言時に同時に初期化する場合だけの書き方で、分離して書くと
int *ptr;
ptr = #
となる。二つ目の文のptrに*がついていないことに注意。
    • good
    • 2

>*ptr = &num で23がptrの値の部分に代入されたのはわかります。



そういう風にあさってに理解してはだめ。

「num変数へのポインタ(アドレス)がptrに代入され
ptrはnumを指すようになった。」
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!