说我有struct
:
struct card{
char num;
char suit;
};
这个结构指针数组:
struct card *deck[52];
然后这种方法初始化一副牌(这是一个设备驱动因此kmalloc):
static int __init_deck(void){
// allocate some memory
int i;
for(i = 0; i < 52; i++){
deck[i] = kmalloc(sizeof(struct card), GFP_KERNEL);
if(!deck[i]){
printk(KERN_ERR "Unable to allocate memory.");
}
}
returnValue = misc_register(&deck_dev);
if(returnValue){
printk(KERN_ERR "Unable to register\n");
}
// give the card structs some values in the deck.
// Spades
for(i = 0; i < 13; i++){
// why does this not work??
*(deck[i].num) = (char)i;
*(deck[i].suit) = 'S';
}
// Hearts
for(i = 13; i < 16; i++){
deck[i].num = (char)i;
deck[i].suit = 'H';
}
// Diamonds
for(i = 26; i < 39; i++){
deck[i].num = (char)i;
deckk[i].suit = 'D';
}
// Clubs
for(i = 39; i < 52; i++){
deck[i].num = (char)i;
deck[i].suit = 'C';
}
return returnValue;
}
我声明了一个大小为52的数组,其中包含指向struct card
的指针。我试图明显地尊重数组中某个位置所包含的结构,这样我就可以添加&#34; stuff&#34;到那个结构。为什么不在我的一个案例工作中解除我的引用?
答案 0 :(得分:4)
您在此处取消引用错误,*(deck[i].num) = (char)i;
。
首先,您必须取消引用指针,然后才能访问其成员。
(*deck[i]).num = (char)i;
或使用->
运算符:
deck[i]->num = (char)i;