主要方法
int x, y;
printf("Please enter 2 integers separated by a space: ");
scanf("%d %d", &x, &y);
其他方法。这是从主函数
调用的matrix_get函数的一部分if (key_comp (key, node->key) == 0){
data_print(node->data);
一些标题文件
typedef float Data_Item;
好的,当我返回指向Data_Item的指针(它是一个float typedef)时,它的地址会发生变化,所以当我在main方法中取消引用它时,它变为null。为什么呢?
答案 0 :(得分:0)
printf("%d", &pdata);
应该是
printf("%f", *pdata);
您正在尝试打印指针的地址而不是指针的值。尝试使用%d
打印地址未定义。使用%f
进行浮动。使用wrong format specifier invokes undefined behaviour。
为指针分配的内存会泄漏,因为指针的值会被本地变量的地址覆盖。相反,您应该将局部变量中的数据复制到为指针分配的内存中。
*pdata = node->data;
答案 1 :(得分:0)
该行
pdata=&(node->data);
更改pdata
的值。它现在与malloc
返回的值不同。你注释掉的更有意义的一行是:
//*pdata=node->data;
在第一行中,您将pdata
指定为node->data
的地址。在注释掉的行中,您试图设置pdata
指向node->data
的值。
你错过了两个分支的return
。
更改
if(key_comp (key, node->key) == -1){
bs_tree_search_h(node->left, key);
}else if(key_comp (key, node->key) == 1){
bs_tree_search_h(node->right, key);
}
到
if(key_comp (key, node->key) == -1){
return bs_tree_search_h(node->left, key);
}else if(key_comp (key, node->key) == 1){
return bs_tree_search_h(node->right, key);
}