- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以,这是故事。我正在尝试创建一个递归下降解析器,它标记一个字符串,然后从这些标记中创建一个节点树。
我的主要类(class)的所有指针都在工作......如果你之前使用过 RDP 那么你知道我在说什么程序 -> 语句 -> assignStmt...等。这个想法是程序节点有一个指向语句节点的子节点,等等。
问题来了。当我到达树节点的末尾时,我指向的是分词器从字符串创建的实际分词。
所以,假设字符串是:
firstvar = 1;
在这种情况下,有 4 个标记 [{id} firstvar]、[{assignment} =]、[{number} 1]、[{scolon}]
我希望我的 assignStmt 节点指向该语句的非装饰器部分..即,assignStmt 的 child1 将是 [{id} firstvar],child2 将是 [{number} 1]...
然而。当我将 child1 分配给 [{id} firstvar],然后继续处理下一个标记时,child1 的值会随着我向前移动而改变。因此,如果我将我的全局标记更改为下一个标记(在本例中为 [{assignment} =] ),那么 assignStmt 的 child1 也会随之更改。
这是为什么?我能做些什么?!谢谢你!
TOKEN* getNextToken(void);
//only shown here to you know the return... it's working properly elsewhere
typedef struct node {
TOKEN *data;
struct node *child1, *child2, *child3, *child4, *parent;
} node;
TOKEN *token;
Symbol sym;
struct node *root;
void getsym()
{
token = getNextToken();
sym = token->sym;
}
int main()
{
getsym();
//So, right now, from getsym() the global token has the value {identifier; firstvar}
struct node* tempNode;
tempNode = (struct node*) calloc(1, sizeof(struct node));
tempNode->child1 = tempNode->child2 = tempNode->child3 = tempNode->child4 = NULL;
tempNode->data = token;
getsym();
//BUT NOW from getsym() the global token has the value {assignment; =}, and
//subsequently the tempNode->data has changed from what it should be
//{identifier; firstvar} to what the global token's new value is: {assignment; =}
}
最佳答案
由于我的声誉不佳,我无法对此发表评论,因此我将添加这个答案,如果理解了您的问题,您可能正在传递一个指向函数的指针,而问题是您可能需要一个指向指针的指针只是一个指针。
在 C 中,当您将值传递给函数时,您是按值而不是按引用传递它们,这意味着该函数会创建该参数的本地副本,并且它只能使用该本地副本,问题在于所有更改只会影响本地副本,当函数终止时,如果您不正确处理,所有更改都将丢失。
关于C Treenode 指针用全局变量改变值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12828477/
我有一个 JTree (myTree) 在另一个类(class),我有一个 DefaultMutableTreeNode取自myTree。 在某个函数中,我想要 JTree突出显示该节点。 我试过了:
我是golang的新手,对以下内容感到困惑, type TreeNode struct { Val int Left *TreeNode Right *TreeNode
这与大多数应用的行为方式相同。我认为 TreeView 默认情况下是这样工作的。 有没有办法做到这一点,还是我必须让已检查的 TreeNode 的所有子节点并自己检查它们? 这是 winforms。
这是我的代码: if (e.Node.Parent == null) { string selectedNodeText = e.Node.Text; TreeNode x = e.N
最近做了很多思维导图,经常遇到无法合并分支的问题。比如一个节点有branch1、branch2、branch3和branch4,我发现branch3和branch4可以趋向于另一个节点。但是,Mind
与System.Windows.Forms中的其他一些控件集合一样,TreeNodeCollection实现IEnumerable。这背后是否有任何设计原因,还是仅仅是泛型问世之前的宿醉? 最佳答案
在 TreeView 中插入长文本节点时 - 出现水平滚动条。有没有办法在 TreeNode 中自动换行而不是滚动? 目前我使用的解决方案是根据 TreeView 的宽度分割文本并在不同的节点中显示其
我有一个 uitree 结构并使用激活的 MultipleSelectionNodes 属性。我总是选择两个节点。我需要永久修复其中一个的选择,而另一个可以通过鼠标选择进行更改。我怎样才能实现这一目标
如何在 ASP.NET 中突出显示选定的 TreeNode (UI.WebControls)?目的是让用户看到他或她当时正在查看的类别。 我的想法是,在每个 TreeNode 上,检查其属性 Sele
我有一个带有一堆 TreeNode 的 TreeView 控件。每个节点 ContextMenu 根据其状态具有不同的 MenuItems。所以我目前正在为每个 TreeNode 附加其自己的 Con
public class Solution { public TreeNode invertTree(TreeNode root) { if(root == null)
所以,这是故事。我正在尝试创建一个递归下降解析器,它标记一个字符串,然后从这些标记中创建一个节点树。 我的主要类(class)的所有指针都在工作......如果你之前使用过 RDP 那么你知道我在说什
所以,这是故事。我正在尝试创建一个递归下降解析器,它标记一个字符串,然后从这些标记中创建一个节点树。 我的主要类(class)的所有指针都在工作......如果你之前使用过 RDP 那么你知道我在说什
现在我的循环是 for (TreeNode n = e.Node.FirstNode; n != null; n = n.NextNode) 我的数据是这样的 a a1 a2 b
我有一个使用 Treeview 的网页。在 TreeView 中是节点,我使用 Text 和 Value 属性,但我还需要一个。我需要一个名为 IsFile 的 bool 属性。 我创建节点并以编程方
基本上 TreeView 有复选框,我能够获得 TreeNode,但无论我在 TreeNode 上单击什么地方,它都会为我提供 TreeNode,从它的文本到它的复选框,再超出一点(向左)。 我能否限
以下代码不会运行,因为在按名称“RootNode”检索时 rootNode 为 null treeView1.Nodes.Add(new TreeNode("RootNode")); ... /
我正在我的 C# GUI 应用程序中使用 TreeView 和 TreeView.Nodes,并希望在我的树中的几个节点上使用右键单击功能。我已经搜索了很多,但似乎 SelectedNode 仅对左键
我试图在鼠标悬停在 TreeView 节点上时显示工具提示。但是工具提示没有显示。 这是我的代码: private void treeView1_MouseHover(object sender, E
如何将全尺寸图像嵌入到 TreeNode? 目标是显示详细的日志文件,其中每个节点代表窗口标题,其子节点包含键盘记录。 最佳答案 使用以下模式将图像添加到 TreeView 图像列表。 ImageLi
我是一名优秀的程序员,十分优秀!