一世轻尘 发表于 2020-12-17 19:01:54

引用

C++引用到底有什么作用啊,尤其是形参里的引用,如果去掉&有什么差别吗?没学过C++,不太懂。{:10_327:}
再换个背景{:10_264:}

倒戈卸甲 发表于 2020-12-17 19:35:55

本帖最后由 倒戈卸甲 于 2020-12-17 19:40 编辑

。。。。不学c++,你为何要问这个问题。加上&这个符号后,表示在任何时候处理该变量都是直接找到该变量的内存地址,对这个内存地址里的值进行操作。基本就是只认经纬度不认这个地的地名有哪些称呼。c++的引用是现在编程这整个行业的底层基本技术。后来java,python这些面向对象的编程语言全都采用了引用这个技术,准确来说,在这些语言里你就找不到哪个对象是非引用的。不仅如此,对象的各种方法,有七成以上还是const &常量引用,不仅100%指向原对象,而且100%不让你乱修改

倒戈卸甲 发表于 2020-12-17 19:45:17

好吧~_~,才看到你问的其它问题。你何止是没学过c++,根本没学过编程吧。那我上面讲的你其实也并不能听懂。爱问问题是好事,但你现在缺乏基本常识,还是先学习基础,有个系统的了解后再深入吧

一世轻尘 发表于 2020-12-17 19:48:10

倒戈卸甲 发表于 2020-12-17 19:35
。。。。不学c++,你为何要问这个问题。加上&这个符号后,表示在任何时候处理该变量都是直接找到该变量的内 ...

void initialize(struct student *&head)
{
        head=(struct student*)malloc(LEN);
        if(head==NULL)
        {
                printf("error!");
                exit(1);
        }
        head->next=NULL;//使头结点指针域为空
}

还是不太懂,以这个函数为例吧,为什么struct student *head不行

倒戈卸甲 发表于 2020-12-17 19:59:16

本帖最后由 倒戈卸甲 于 2020-12-17 20:02 编辑

一世轻尘 发表于 2020-12-17 19:48
还是不太懂,以这个函数为例吧,为什么struct student *head不行

因为局部变量只在声明的那个函数体内生效,出了函数体立刻销毁。这个函数是对一个链表进行初始化,头节点是要一直使用的,而本身的初始化函数是void类型的局部函数,头节点的初始化没办法被外部接收。但引用就不一样了,函数内的修改是针对那个地址的。总结来说就是,在局部函数里改了那个地址的值,函数没了那个改动依然在,但如果改动局部函数里的某个变量值,这个变量值外部又不接收,那变量没了就都没了。这里不使用引用,改用二重指针struct student **head,去操作head的地址也可以

倒戈卸甲 发表于 2020-12-17 20:03:44

一世轻尘 发表于 2020-12-17 19:48
还是不太懂,以这个函数为例吧,为什么struct student *head不行

所以说,学习循序渐进,你先掌握好指针和地址传递,然后再学链表。
页: [1]
查看完整版本: 引用