前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过指针传递数据是怎么一回事?

通过指针传递数据是怎么一回事?

原创
作者头像
用户8639654
修改2021-07-16 10:42:11
3140
修改2021-07-16 10:42:11
举报
文章被收录于专栏:云计算运维

Hello Everyone,本期又和大家见面了,今天小编带来的是,通过指针传递数据,也就是地址传递。

废话少说,下面直接进入正题吧。

在函数调用过程中,并非所有传入函数的参数都不需要改变,但是仅仅依靠值传递,无法实现在函数内部更改函数参数。为此,可以通过传递地址,使形参和实参都指向主调函数中数据所在的内存,从而使被调函数可以对调用函数中的数据进行更改操作。

与值传递不同,地址传递的是变量的地址,函数形式参数与实际参数指向同一块内存地址,即都指向实际参数所在的内存空间。在函数中通过地址修改变量的值,就是修改实际参数的值。

请看代码。

#include <stdio.h> void func(int* a, int* b) //参数类型为int*类型 { int temp; temp = *a; //通过指针修改变量的值 *a = *b; *b = temp; printf("*a=%d *b=%d\n", *a, *b); //输出交换之后的数据 } int main() { int x = 10, y = 20; func(&x, &y); //调用func()函数,传递变量地址 printf("x=%d y=%d\n", x, y); //输出main()函数中的变量 return 0; }

运行结果如下图。

在上面代码中,首先定义了func()函数,它有两个int*类型的形式参数,在func()函数内部,交换指针a和指针b指向的内存空间的数据;然后在main()函数中调用func()函数,并将变量x、y的地址传递给func()函数;最后输出变量x、y的值。

由输出结果可知,指针a和指针b指向的数据交换成功,变量x、y的数据也进行了交换。

址传递过程相当于定义一个指向变量的指针,通过指针操作变量,变量的值就会发生改变。址传递的过程如下图。

关于指针传递数据呢,今天我们就讲到这里,如果想进行更深入的学习,请关注黑马程序员参与更多互动。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档