ポインタの値

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mika

ポインタの値

#1

投稿記事 by mika » 17年前

ポインタを習い始めましたが、よく分からないので質問させてもらいます。
いろいろやってみたのですが独学なので本当に困っています。
どうかお願い致します・・・

問題は↓のようなものです

以下のプログラムを実行した場合に、各変数の値は①~④の時点で順次どの
ような値になっているか。
ただし、32bit処理系で実行しているものとし、n[0]、n[1]、・・・は夫々
0x1000番地、0x1004番地、・・・に存在するものとする。

/********************************************************************/
int n[7] = {0,1,2,3,4,5,6}; /* int型の配列を宣言し初期値を設定 */
int *p; /* ポインタ変数を宣言 */

p = &n[0]; /* ポインタ変数を初期化 */
*p = 5; /* ポインタを利用して値を変更 */

/* ①この時点で、pの値とn[0]~n[6]の各値は何か? */

p++; /* ポインタ変数をインクリメント */
*p = 6; /* ポインタを利用して値を変更 */

/* ②この時点で、pの値とn[0]~n[6]の各値は何か? */

p = &n[5]; /* ポインタ変数の値を変更 */
*p = 7; /* ポインタを利用して値を変更 */

/* ③この時点で、pの値とn[0]~n[6]の各値は何か? */

p -= 2; /** ポインタ変数を2減算 /
*p = 8; /* ポインタを利用して値を変更 */
*(p+3) = 9; /* ポインタを利用して値を変更 */

/* ④この時点で、pの値とn[0]~n[6]の各値は何か? */
/********************************************************************/

keichan

Re:ポインタの値

#2

投稿記事 by keichan » 17年前

①~④の時にprintfでそれぞれ表示されてみてはいかがですか?

ヒント:
ポインタを表示するには printf("%p", p);
値を表示するには printf("%d", n[0~6]);

mika

Re:ポインタの値

#3

投稿記事 by mika » 17年前

今までポインタを表示するのに%dを使っていました>_<”
%pということが分かったので解決しました!
アリガトウございます。

管理人

Re:ポインタの値

#4

投稿記事 by 管理人 » 17年前

解決されたようでよかったです。
プログラムを書いていると優先度に悩まされたりするのでちょっとご紹介。


まちがい
#include <stdio.h>

int main()
{
	int a=3,*b;

	b=&a;
	*b++;

	printf("%d\n",*b);

	return 0;
}
こちらと


正解
#include <stdio.h>

int main()
{
	int a=3,*b;
	b=&a;
	(*b)++;
	printf("%d\n",*b);

	return 0;
}

これでは表示されるものが全然違うはずです。
がんばってくださいね。

閉鎖

“C言語何でも質問掲示板” へ戻る