(1)B S T R s1
(2)B S T R* s2
(1)と(2)では意味が違うのでしょうか
違うのであれば、違いを教えて頂ければ大変ありがたいです。
ネットで調べたところ(2)はポインタの宣言ということだと思ってたんですが
使ってるうちに何が何だかわからなくなってしまいました。
(1)BSTR s1 = ::SysAllocString(L"s1");
というような使い方をしていたんですが
(2)BSTR* s1 = ::SysAllocString(L"s1");
とするとエラーが出てしまいます
できれば、(2)の正しい宣言のしかたも教えて頂ければありがたいです
宜しくお願い致します
No.1
- 回答日時:
おっしゃる通り、実体とポインタの違いです。
正しい宣言といわれても、どう使いたいのかによります。
BSTR s0;
BSTR* s1 = &s0;
ともできますし、
BSTR* s1 = new BSTR;
ともできますし。
BSTR* s1 = ::SysAllocStr(L"s1");
がエラーになるのは、
double* d = 0.1;
がエラーになるのと同じです。BSTRだから特別というわけではありません。
doubleの場合でもエラーになる理由がわからないのであれば、ポインタに対する理解が不足しているということになります。
ご回答ありがとうございます
整理したいと思います
BSTR s0;
BSTR* s1 = &s0;
では、BSTR型のs1の中身はs0のポインタです
又は、BSTR型s0のポインタはs1の中に入ってます というような意味で良いんでしょうか
BSTR* s1 = new BSTR;
こちらは、BSTR型のs1の中に新しいBSTRが入ってます。という感じで
BSTR* s1 = ::SysAllocStr(L"s1");
がエラーになるのは、
BSTR型のs1の中に、関数を入れようとしてるからエラーになる。
という解釈で良いんでしょうか
疑問ばかりで申し訳ありません
大変勉強になりました
ありがとうございます
No.2ベストアンサー
- 回答日時:
> BSTR* s1 = ::SysAllocStr(L"s1");
> がエラーになるのは、
> BSTR型のs1の中に、関数を入れようとしてるからエラーになる。
> という解釈で良いんでしょうか
違います。
SysAllocStringはWindowsのAPIですよね。であれば、BSTRを返す関数です。
BSTRの実体をBSTR*というポインタ型に代入することはできません。
BSTR s0;
BSTR* s1=s0;
としているのと同じです。
ところで、なぜBSTR*にしているのでしょうか?
BSTR*を引数とする関数に渡したいとか?
そうであれば、
BSTR s1 = ::SysAllocString(L"s1");
として、関数に渡す時に&s1にすればいいだけです。
なるほど
BSTR* はBSTRを指すポインタということですね
あああ
だから double* d = 0.1; はエラーになるんですね
ダブルを指すポインタに・・・
&s1についてですが
BSTR s1 = ::SysAllocString(L"s1");として
関数に渡す時に&s1としていたんですが
仕様書に
BSTR* 32ビット文字列ポインタとありましたので
BSTR と BSTR* は違うものなのかと思い質問させて頂きました。
実体とポインタ
大変勉強になりました。
プログラムのバグも改修でき、感謝しております。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- 工学 電気回路の2端子対回路 (1)スイッチS1のみが開いているときの電流I1を求めよ。 (2)スイッチS 4 2023/05/29 16:40
- 統計学 t値の計算方法 1 2022/11/29 18:37
- 数学 数学の質問です。 kを正の実数とする。 点Pは△ABCの内部にあり、 kAP+5BP+3CP = 0 2 2023/07/03 21:24
- 英語 節を列挙する例示表現について 2 2022/08/15 13:52
- Visual Basic(VBA) 該当セルに行替えを含むデータを命令文に入れて、2行に表示したい。 5 2023/07/20 11:51
- 工学 回路の勉強をしています。添付の説明で一点理解できないため教えてください。スイッチS1を閉じて定常状態 1 2022/10/24 15:58
- Excel(エクセル) EXCELの複数条件検索 1 2022/05/09 22:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
コンパイルできません。
-
sys/time.hのインクルードがで...
-
HEWを使用しているのですが、こ...
-
ビルド時にinet_ptonが見つから...
-
RightとLeft関数のライブ...
-
multiple definitionというエラー
-
strcatについて
-
ビルドが失敗してしまいます
-
fortranでプログラムを実行する...
-
バッチからsqlplusの接続エラー...
-
LPCWSTRとchar
-
VB2008で定数に色の設定をした...
-
適切な変換関数が存在しない???
-
右オペランドを扱う演算子は定...
-
レコードセットをcloseする所で...
-
C言語でpgm形式の画像を読み込...
-
フォートランプログラムのエラ...
-
visual C++ でaruduinoとシリア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
適切な変換関数が存在しない???
-
Excelのエラーで困ってます。
-
バッチからsqlplusの接続エラー...
-
fortranでプログラムを実行する...
-
HEWを使用しているのですが、こ...
-
コンパイルできません。
-
デバッグ中のエラーのことで教...
-
visual C++ でビルドの中止がで...
-
BC30002: 型 'ListItem' が定義...
-
Handlesについて
-
sys/time.hのインクルードがで...
-
ビルド失敗 指定されたファイ...
-
VB2008で定数に色の設定をした...
-
RightとLeft関数のライブ...
-
multiple definitionというエラー
-
WindowsからLinuxへの移植
-
HANDLEの宣言でのエラー
-
レコードセットをcloseする所で...
おすすめ情報