美文网首页C
在子函数中改变指针的值

在子函数中改变指针的值

作者: SnC_ | 来源:发表于2019-06-12 17:22 被阅读0次

先看一段代码

typedef struct LinkNode{
    int data;
    struct LinkNode *next;
}Node;

void test(Node* a){
    Node *b = (Node*)malloc(sizeof(Node));
    b->data = 2;
    a = b;
}

int main(){
    Node *a = (Node*)malloc(sizeof(Node));
    a->data = 1;
    test(a);
    printf("%d",a->data); // Output : 1
    return 0;
}

为何在子函数中修改指针的指向不成功呢?

因为,指针作为形式参数传给子函数,传递的是指针本身的值。
子函数会在栈中新开辟空间来保存该值。修改该值,并不会影响主函数中的实参。

如何在子函数中修改指针的值?
  1. 使用指针的指针
    若将指针a的指针作为子函数参数,则在子函数中是可以通过引用关系找到指针a的位置,并对其进行修改的。
  2. 子函数return局部变量
    用return来传递函数中修改后的结果,是一种比较朴素的做法。

相关文章

  • 在子函数中改变指针的值

    先看一段代码 为何在子函数中修改指针的指向不成功呢? 因为,指针作为形式参数传给子函数,传递的是指针本身的值。子函...

  • C++指针常量与常量指针

    指针常量:指针本身是常量,指针的值不能改变常量指针:指针指向的值是“常量”(打引号表示的是不能通过指针改变指向的值...

  • 数组做参数

    数组做参数,是以指针的方式,改变函数中数组的值,就可以修改原数组的值。 指针的作用就是可以在函数以外访问数据。

  • 函数调用改变指针指向

    指针mp原本指向变量a,希望使用子函数改变指针指向,使其指向变量b。判断以下代码是否正确? 期待结果为:*mp_b...

  • C/C++ const

    C c中的cosnt都是一个只读变量。但是可以通过指针改变它的值。 改变p的值,i的值也会被改变。 C++ c++...

  • Go 指针声明后赋值,出现 panic: runtime err

    指针基础知识 在 Go 中 * 代表取指针地址中存的值即指针的值(这个值是一个内存地址),& 代表取一个值的内存地...

  • Java填坑笔记:值传递与引用传递

    Java中没有指针,只存在值传递 对于对象(数组,类,接口)的传递似乎有点像引用传递,可以改变对象中某个属性的值。...

  • 3-1

    练习:在主函数中定义2个变量int a=3,b=5.再定义一个子函数,在这个子函数中实现a,b的值交换,并在主函数...

  • C/C++的指针与数组

    一、指针 1.1、指针与地址 示例: 输出结果: 通过指针修改变量的值: 示例: 输出结果: 如果指针暂时没有所指...

  • 指针 数组 互相转换

    数组转指针 指针使用数组中的值

网友评论

    本文标题:在子函数中改变指针的值

    本文链接:https://www.haomeiwen.com/subject/yftrfctx.html