为什么我在这2个分配中获得不同的输出,一个分配在一个函数中,另一个分配在一个指针的主体中?

时间:2019-06-01 03:48:45

标签: c++

“我试图将const data = { "lonlat": "POINT (-42.796763 -5.077056)" }; const regex = /[A-Z]+\s\((-?\d+\.\d+)\s(-?\d+\.\d+)\)/; const [, longitude, latitude] = data.lonlat.match(regex); console.log(longitude); console.log(latitude);分配给函数中的指针根。但是实际上NULL并没有使用函数分配它。但是当我尝试分配NULL时基本上,它被分配了。我不知道为什么会这样?

root = NULL

我得到的输出是:

#include<bits/stdc++.h>
using namespace std;
struct node{
    int key;
};
void deletion(struct node* root){
    root=NULL;
}
void print(struct node* temp){
    if(!temp)
    return;
    cout<<temp->key;
}
int main(){
    struct node* root = new struct node;
    root->key=10;
    cout<<"Initially : ";
    print(root);

    deletion(root);
    cout<<"\nAfter deletion() : ";
    print(root);

    root=NULL;
    cout<<"\nAfter assigning in main() : ";
    print(root);
}

1 个答案:

答案 0 :(得分:1)

您正在按值传递指针并修改该值。要修改要传递的变量的值,可以通过引用(C ++样式)传递它,也可以通过指针(C样式)传递它。对于C样式,请记住取消引用指针以更改其对调用者的值。

C ++风格:

void foo(const struct node*& n);

C风格:

 void foo(const struct node** n);