No.6ベストアンサー
- 回答日時:
★紹介
・スタック・ポインタを理解するにはスタックの動きをお勉強して下さい。
下にアセンブラ入門のサイトを紹介します。
C言語のポインタを学習するのに一番の近道はメモリ・イメージを
紙などに描きアドレスを考えることです。
また、アセンブラをちょっとお勉強すればポインタの理解も早いかもしれない。
・ちなみにポインタを簡単に説明するとデータ型とアドレスの2つの情報を持つもの。
例えばアセンブラでアドレスが0x1000のとき
アドレスに+1すると0x1001になります。
ポインタに+1するとデータ型によって加算される値が変わります。
つまり
char *pc→char型は1バイトなので0x1001となる
long *pl→long型は4バイトなので0x1004となる
double *pd→double型は8バイトなので0x1008となる
このようにポインタはデータ型により+1した時にアドレスに加算される値が異なります。
※通常はポインタのアドレス値を考えなくて良い。アセンブラではないので。
参考サイト:
http://www5c.biglobe.ne.jp/~ecb/assembler/assemb …
http://www5c.biglobe.ne.jp/~ecb/assembler/4_7.html
http://www5c.biglobe.ne.jp/~ecb/assembler/4_8.html
No.5
- 回答日時:
>C言語のポインタとスタックポインタというのは同じなのでしょうか。
違うものです。
>スタックポインタの考えは大体理解出来たのですが
>C言語のポインタとなるとコードを見てもサッパリ分かりません。
違うものなので、サッパリ分からなくても当然です。
>ネットで調べても出てこなかったのでどなたか教えて下さい。
普通は比較する対象ではないので、ネットで調べても出てこないでしょうね。
でも、「メモリのどこかを指す」という点はいっしょなので、スタックポインタが本当に理解できているのなら、ポインタの理解もたやすいと思いますよ。
No.4
- 回答日時:
★補足要求します。
スタックポインタとは
1...C言語でスタック・データ構造を組んでPush、Popのポインタを意味するのか?
2...CPUプロセッサのレジスタの1つにあるスタック・ポインタ(sp)を意味するのか?
どちらですか?
ここがハッキリしないと誰も適切な回答が出来ません。
ソースなども含めて補足して下さい。
この回答への補足
言葉足らずですみませんでした。
私が言おうとしていたのは
>2...CPUプロセッサのレジスタの1つにあるスタック・ポインタ(sp)を意味するのか?
のことです。
No.2
- 回答日時:
別物です、たぶん
スタックというデータ構造がありますが、その説明の部分で出てきていて、データの読み書きにstack[sp]の様に配列を使うなら、スタックポインタとは呼ばれますが int や long など整数型の変数になります
ポインタの練習を兼ねているような場合は、ややこしいですが…C言語のポインタということになります
*spでスタック上のデータにアクセスしてsp++やsp--でPush/Popを実現しているとか
関数の呼び出しや、変数がどのように管理されるかのような部分で出てきたのなら、CPUのデータ管理の仕組み・スタックを管理するためのもの(レジスタ)を意味します
No.1
- 回答日時:
・ 「ポイント」と言うのは、「指す」ということです。
・ C言語の「ポインタ」と言うのは、普通、[メモリのアドレス]を指します。
・ 「スタックポインタ」と言うのは、スタックの特定位置を「指す物」ということですね。
・ C言語の「ポインタ」は、「物理」なメモリを意識する必要があります。
アセンブリ言語やマシン語の知識も必要となってきます。
「メモリ」に対する考え方を経験する必要がありそうです。
>C言語の「ポインタ」は、「物理」なメモリを意識する必要があります。
アセンブリ言語やマシン語の知識も必要となってきます。
「メモリ」に対する考え方を経験する必要がありそうです。
メモリに対する考え方ですね!
一直線にポインタを勉強するより遠回りしてメモリの考え方から勉強した方が
知識が深まりそうですね。
非常に参考になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# C言語で構造体の参照渡しができません 2 2022/12/18 21:22
- C言語・C++・C# 双方向リスト 1 2023/06/28 04:16
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# いまc言語を独学で勉強しているのですがいまいちわかりません。 https://monozukuri- 3 2023/07/06 18:59
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# C言語の質問です HTMLでこのようなコードを書いたのですがそれをC言語で同じように書きたいです < 1 2022/08/11 23:38
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
C言語のポインタに直接アドレス...
-
fopne で失敗する原因
-
Run-Time Check Failure #3とい...
-
C言語の関数と配列に関する質問
-
LPSTR型の初期化について
-
戻り値で構造体を返すことは可...
-
参照型で受け取った引数をポイ...
-
構造体とfscanf
-
ExcelVBAでのkernel32(64bit)
-
アプリを32bitから64bit移行
-
Cで作成したDLL関数をVBから呼...
-
C言語でのconstを返す関数
-
main(int argc,char **argv[])...
-
DLL<->VB間での受け渡し(文字...
-
PASCALとFARの意味
-
エラーの意味
-
ハンドルはポインタか
-
TCHAR文字列内の検索について
おすすめ情報