【发布时间】:2011-02-28 22:48:15
【问题描述】:
我试图更好地理解 c,但我很难理解在哪里使用 * 和 & 字符。通常只是结构。下面是一段代码:
void word_not(lc3_word_t *R, lc3_word_t A) {
int *ptr;
*ptr = &R;
&ptr[0] = 1;
printf("this is R at spot 0: %d", ptr[0]);
}
lc3_word_t 是这样定义的结构:
struct lc3_word_t__ {
BIT b15;
BIT b14;
BIT b13;
BIT b12;
BIT b11;
BIT b10;
BIT b9;
BIT b8;
BIT b7;
BIT b6;
BIT b5;
BIT b4;
BIT b3;
BIT b2;
BIT b1;
BIT b0;
};
这段代码没有做任何事情,它可以编译,但是一旦我运行它,我就会收到“分段错误”错误。我只是想了解如何读取和写入结构以及使用指针。谢谢:)
新代码:
void word_not(lc3_word_t *R, lc3_word_t A) {
int* ptr;
ptr = &R;
ptr->b0 = 1;
printf("this is: %d", ptr->b0);
}
【问题讨论】:
-
当您在参数 R 中添加星号时,我认为您希望
*ptr = &R;成为ptr = R;实际上只是一个 [整数] 地址。参数 R 的类型可以被认为是元数据,用于在取消引用对象时适当地访问它。在该地址上使用星号(当它不在声明中时)取消引用该地址并找到它“指向”的内容。 -
他可能还希望
&ptr[0] = 1;成为*ptr = 1;- 希望这是一台 16 位机器...
标签: c pointers data-structures