
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
ものすごくおおざっぱな言い方をすると、
「変数のポインタを渡す」は、「変数を参照渡しする」
と一緒と考えていいんじゃないかと思います。
そう置き換えると、たいがいの話が通じるんじゃないかと。
No.4
- 回答日時:
No.3さんの回答のとおりのようですね。
たぶん、先輩はCかC++の言語がメインなので「ポインタ」という単語が出たのだと思えます。ちょっと調べたところ、VB6からVB.NETに変わるとき、ポインターの概念よりもさらに難しいと思えるクラスライブラリが追加されています。となると、アセンブラ等を触ってポインターが理解できたとしても、さらにクラスの考え方と使い方を覚えないといけないのですね。
WindowsがMacの真似をして進化するように、VBやJava,C#はC++で成功した仕様を遅れて取り込もうとしていますので、本家であるC++を勉強すればVB.NETの仕様も理解しやすい気もします。(C++を真似た仕様の取り込みはあまり成功しているようには思えませんけどね。なんか複雑さが増すばかりのような・・・)
最近、C++の本を読んでいると、「最近は、言語仕様とか文法を覚えるだけでは、ほとんど役にたたない。ライブラリやクラス、テンプレートの使い方をマスタすることが必要だ」というようなことが書かれていました。そして、実際に使わないと覚えることはできない、とも。
とはいっても、ポインターの概念は大切ですので、頑張ってマスターしましょう。
P.S.
C言語の解説に「配列はポインタと同じようなものだ」という説明がしばしばあります。でも似ているけど違います。このあたりの解説はアスキー出版の「エキスパートCプログラミング--知られざるCの深層/\3,107」の説明が分かりやすいです。お勧め!
No.2
- 回答日時:
昔のVBは触っていましたが、最新のVB.NETは使っていませんけど・・。
基本的には、VBではポインターを使うコーディングは使えなくはないにしても使いにくいし、そもそも、そういうコーディングはしないのが普通ではないでしょうか?また.NETでは、直接ポインターを操作することはC#でも禁じ手(使えないことはないが面倒な手順が必要)なので、わからないのも無理ないと思えます。ポインタで処理すれば、データ本体のコピーをすることなく、データの収容されたメモリアドレス先頭位置さえ渡せばいいため、1GBの巨大データもアドレス情報の受け渡しだけで済むので処理速度で大いに有利です。
ただ、クラスで処理するってことは、目に見えないところでポインターを使いまくっていることです。(Javaもそうですね)ですので、もしかすると、先輩の言うようなポインターを活用した手法があるのかもしれません。
でも、ユーザにプログラムでポインターをコントロールさせるっていうことは、.NETシステムのコンセプトを根底から崩すことになる気がしますので、知らないほうがいいのかもしれませんね。
ちなみに、ポインターを理解するには8bit系CPUのアセンブラ言語を勉強するのが一番です(16bit系以上は難しいので)。あるいは、C言語のソースと、Cのコンパイラーオプション指定で得られるアセンブラーソースを対比して調べるのもいいと思います。
No.1
- 回答日時:
ポインタ 用語で、検索すると良いでしょう。
下記は、あるサイトからの抜粋です。
内容を読んでも難解なことばかりですね。
遠慮せず上司や先輩に聞きましょう。
質問できるのは、いまのうちですよ。
時間がたってからは、質問し辛いですよ。
ポインタとは
プログラミング言語において、ある変数の内容が格納されている場所の位置情報を保持する変数。C/C++言語におけるポインタは、メモリ空間内のアドレスをそのまま数値として保持している。
C/C++言語では、関数の引数としてポインタを渡すことで(参照渡し)、関数内でポインタの指し示す変数の内容を直接書き換えることができる。またポインタをインクリメントしながらその指し示す場所へアクセスすることで、変数が連続して記憶されているデータ構造(配列)を実現することができる。他にも、データ構造体に次のデータ構造体の位置情報を持たせることによってデータ構造体を連結させた連結リスト構造や、その他の複雑なデータ構造を実現する上でもポインタは不可欠である。
C/C++言語では、関数の実行コードが格納されている場所もポインタ(関数ポインタ)として扱うことができる。これを利用して、ある関数に別の関数を指し示すポインタを引数として渡し、渡した先でその関数を実行するというテクニックが使える。
C/C++言語においてはポインタを使うことでプログラミングの自由度が高くなる反面、実行コード領域を含めたあらゆるメモリ領域にポインタを用いてアクセスできてしまうために、バッファオーバーフローなどによって予期せぬ不具合を生む原因ともなるため、注意して使う必要がある
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- デスクトップパソコン 全画面表示でもタスクバーを前面に隠す、表示させるようにしたい 3 2022/03/23 12:30
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- 学校 専門1年生です。私は1ヶ月近く学校の違反駐車をしていました。今日駐車場の係のクラスメイトから連絡が来 2 2022/05/09 21:02
- 友達・仲間 いい人ほど嫌われるのは何故でしょうか 25 2023/03/24 14:21
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- その他(悩み相談・人生相談) 将来伸びる高校生って? 1 2022/05/14 14:39
- その他(法律) これは、出資法違反だかってのに該当しますか? 2 2022/07/03 19:02
- その他(悩み相談・人生相談) 何を言えば、借金の心配はない!と言えますか 1 2022/10/06 17:34
このQ&Aを見た人はこんなQ&Aも見ています
-
VBでC言語のポインタみたいな使い方?
Visual Basic(VBA)
-
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
VB.net 引数で配列変数を渡す際の要素数
Visual Basic(VBA)
-
-
4
VB.netで、動的な型変換を行いたいのですが、、、(CTypeではできない?!)
Visual Basic(VBA)
-
5
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
6
配列を関数に渡す方法
Visual Basic(VBA)
-
7
VB.netでDLLを読み込んで実行する際に、スタックを不安定にしていますというエラーが出ます。
Visual Basic(VBA)
-
8
イベントにAddHandlerされているか判断
Visual Basic(VBA)
-
9
VB.NETで小数点以下の桁数を取得したい
その他(ソフトウェア)
-
10
VB.NETでActiveX(OCXファイル)作成
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
デバイスハンドルとは?
-
アドレス値はどの型にキャスト...
-
アプリを32bitから64bit移行
-
Excel VBAで絶対アドレスのメモ...
-
セグメントエラー
-
戻り値で構造体を返すことは可...
-
別のDLLのダイアログを・・・
-
リトルエンディアンというもの...
-
NULLと’\\0’のNULL文字は違うも...
-
ReadFileの読み込みエラーについて
-
fopne で失敗する原因
-
メモリのアドレスからの値の取...
-
【C++】関数ポインタの代入
-
ExcelVBAでのkernel32(64bit)
-
C++でクラスのインスタンス化が...
-
型変換について
-
C言語でのconstを返す関数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインタに直接アドレス...
-
fopne で失敗する原因
-
戻り値で構造体を返すことは可...
-
LPSTR型の初期化について
-
Run-Time Check Failure #3とい...
-
ExcelVBAでのkernel32(64bit)
-
参照型で受け取った引数をポイ...
-
init関数の意味
-
セグメントエラー
-
アプリを32bitから64bit移行
-
ハンドルはポインタか
-
ハンドル、アドレス、ポインタ...
-
C言語でのconstを返す関数
-
C++で関数ポインタから関数名を...
-
パスからファイル名を抽出
-
ReadFileの読み込みエラーについて
-
#define NULL ((void *)0) の弊害
-
CImage GetBitsメソッドについて
-
ポインタ変数の疑問
-
Cで作成したDLL関数をVBから呼...
おすすめ情報