龙空技术网

C语言快速入门——使用指针带回值

glimix 347

前言:

目前小伙伴们对“c语言取指针里的值”都比较关心,看官们都想要了解一些“c语言取指针里的值”的相关资讯。那么小编在网摘上收集了一些有关“c语言取指针里的值””的相关知识,希望看官们能喜欢,姐妹们一起来了解一下吧!

目前我们已经学习了指针的两种来源方式,

取一个变量的地址动态分配存储空间

在此基础上,进一步讨论一下指针与函数关联的知识——使用指针间接带回值。

函数参数的方向

根据函数是否改变参数的值,可以把参数分为输入型、输出型、输入输出型三种类型。输入,即在函数内部仅使用变量的值,变量自身无需改变。输出,即用一个变量保存函数内部的某些数据供外部使用。输入输出,就是具有前两种功能的参数。

一个函数只能返回一个值,下面的函数目的是希望a,b带回需要的值,实际上函数返回后,a,b的值根本没有改变。

使用指针间接带回值

当把一个参数传递给函数时,实际上传递的是此参数的一个拷贝,在函数内部对参数的修改事实上就是修改这个副本的值,而原始值并未变量,对于指针参数也是如此。

这就是为什么函数返回后原数值未改变的原因。但把指针变量传递给函数后,却可以带回改变后的数值。这是因为此时赋值使用的是解引用操作符,虽然指针变量自身是一个拷贝,但对这个拷贝解引用与原指针持有的地址是同一个位置,因此值可以被带回。

题外话in-out

让我们把函数的定义变得复杂一些,这样你就会理解碰到过的一些看起来奇奇怪怪的函数原型了。

我们使用#define定义了三个标记,这与以前定义常量有所不同,在标识符(如in)之后没有任何数值,这就相当于定义了一个占位符。在声明或定义函数时使用这些标志值明确的指示了函数参数的输入输出方向。这种技巧在一些库的实现中存在,目的就是增加可读性。当然,在代码编写的上也变得冗长了。

标签: #c语言取指针里的值