【发布时间】:2014-03-22 02:39:29
【问题描述】:
我必须澄清一个疑问,它在 c 和 c++ 中也具有相同的概念。
假设我有一个这样的结构:
struct Huffman
{
int value;
unsigned char sym; /* symbol */
struct Huffman *left,*right; /* left and right subtrees */
};
typedef struct Huffman Node;
Node * tree;
现在我使用树变量创建树。然后同时使用点运算符和箭头运算符。 像这样。
箭头运算符:
for (i = 0; i < data_size; i++)
{
// the problem is here this tree pointer don't store the values for all alphabets, it just remembers the last executed alphabet after this for loop.
tree -> left = NULL;
tree ->right = NULL;
tree -> symbol = storesym[i];
tree -> freq = storefreq[i];
tree -> flag = 0;
tree -> next = i + 1;
cout<<"check1 : "<<tree -> symbol<<endl;
}
点运算符:
for (i = 0; i < data_size; i++)
{
tree[i].symbol = storesym[i];
tree[i].freq = storefreq[i];
tree[i].flag = 0;
tree[i].left = tree[i].right = tree[i].value = NULL;
tree[i].next = i + 1;
}
现在我无法理解 (1) 两者有什么区别? (2) 它们在内存中是如何分配的?
【问题讨论】:
-
@JosephMansfield 我刚刚编辑过,那是错误的。实际上是树