• 締切済み

バイト型データの参照

VC++初心者です。 バイト型の変数 BYTE pbAttr; をchar ssに代入しようとしているんですがエラーとなります。 エラーメッセージ CRPTC_accessDlg.cpp(296) : error C2100: 間接指定演算子 (*) の使い方が正しくありません。 コード char ss[10];   for(i=0;i<10;i++){     ss[i] = *pbAttr;     ++pbAttr;   } どこがおかしいのか、ご教授願います。

みんなの回答

  • 6dou_rinne
  • ベストアンサー率25% (1361/5264)
回答No.4

>pbAttrはBYTE型で10の長さをもつているらしいのですが、&pbAttrで返るということは最初の1つのアドレスが返ってくるという事ですよね というか、ptAttrの最初の位置のポインタが帰ってくると考えてください。 ptAttrがどういうふうに宣言されいるかがよくわかりませんが、10の長さをもっているということは BYTE[10] ということでBYTEとcharはサイズは同じですから   for(i=0;i<10;i++){     ss[i] = (char)pbAttr[i];   } でいいんではないでし)4t> jqキャストも必要かもしれません。

hibachi
質問者

お礼

回答ありがとうございます。 多分分からない事が複数あったため私自身こんがらかっているものと思われます。 もう少し考えてからまた質問させてください。 失礼しました。

すると、全ての回答が全文表示されます。
  • 6dou_rinne
  • ベストアンサー率25% (1361/5264)
回答No.3

>Ret = SCardGetAttrib(phCard,SCARD_ATTR_ATR_STRING, &pbAttr,&pcbAttrLen); &で返されているのなら*で操作するのは違うような気がします。

hibachi
質問者

補足

すみません、要はpbAttrの中身を知りたいんです。pbAttrはBYTE型で10の長さをもつているらしいのですが、&pbAttrで返るということは最初の1つのアドレスが返ってくるという事ですよね。残り9つを参照するにはどうしたたらいいか考えているうちにこんがらかってしまいました。もっと簡単にできるんでしょうか?

すると、全ての回答が全文表示されます。
  • usami33
  • ベストアンサー率36% (808/2210)
回答No.2

ss[i] = (char *)pbAttr; 入れ込む側の型にキャストしないと

すると、全ての回答が全文表示されます。
  • 6dou_rinne
  • ベストアンサー率25% (1361/5264)
回答No.1

pbAttrの定義ははポインタですか?

hibachi
質問者

補足

お世話になります。 宣言は BYTE pbAttr;ですが、以下の関数でポインタとして返されているようです。 Ret = SCardGetAttrib(phCard,SCARD_ATTR_ATR_STRING, &pbAttr,&pcbAttrLen); すみません、初心者なものでポインタの概念自体よくわかってないかもしれません。

すると、全ての回答が全文表示されます。

関連するQ&A