当前位置:首页 > 科技 > 正文

函数指针做参数的作用 指针变量只能作为函数的形参

函数指针做参数的作用 指针变量只能作为函数的形参

很多朋友对于函数指针做参数的作用和指针变量只能作为函数的形参不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!c语言如何定义指针参数在编写过程或函...

很多朋友对于函数指针做参数的作用和指针变量只能作为函数的形参不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

c语言如何定义指针参数

在编写过程或函数时,如果需要指针作为参数,需要在参数名前加*号。如

swap(int*p,int*q)

学习c语言的时候指针应该怎么理解

简单的说,指针就是一个代表地址的无符号整数。

通常我们使用指针,是为了读取或改变指针指向的数据。

所以,单独理解指针是不够的。还得了解指针指向的数据空间是如何安排的。这有可能会涉及到与具体CPU/OS相关的一些知识。如果能结合计算机体系结构知识一起理解会更深入、更准确。

比如:

各种整数(signed/unsignedlong/int/short)是如何存放的?

各种浮点数(float/double/longdouble)是如何存放的?

数组在数据空间中是如何组织的?

字符串是如何存放的?

结构(struct)和联合(union)是如何存放的?

位域(bitfield)的组织

这其中和具体CPU相关的部分通常有:

结构(struct)和联合(union)的对齐,通常会以CPU字长对齐

整数的存放,会涉及CPU大小端的规定

浮点数的存放,和FPU的设计直接相关

再进一步,还有一些扩展知识,涉及内存的分配和释放:

程序中如何分配内存?(malloc/free)

堆(heap)和栈(stack)各是什么?

这些又和CPU/OS相关。

小结一下:指针就是地址,也是一个整数。但要用好它,需要了解计算机存储空间的分配规律,难点在这里,突破点也在这里。

c语言指针详解通俗易懂

指针是C语言中的一种特殊数据类型。它用于存储变量的内存地址,通过这个地址可以直接访问和修改该变量的值。

指针的作用是实现变量间的引用和传递。比如,可以通过指针将一个函数的返回值传递给另一个函数,或者通过指针修改外部变量的值。使用指针时需要注意指针的初始化和解引用操作,以及可能出现的空指针和野指针问题。指针的理解和使用对于掌握C语言的高级特性非常重要。

为什么指针传入函数会改变

形参其实是在把实参传递给子函数的时候定义了一个新的变量,但是这个变量的值和实参相等

所以在子函数里无论怎么修改都不会影响到调用它的函数的实参的值

在用指针做参数的时候因为传递的不是值本身,而是它所对应的地址,我们改变值的时候是改变那个地址里的值所以传递指针的话就能改变值了

如果你希望在子函数里可以修改调用它的函数的值的话你可以使用引用函数

就比如

#include<stdio.h>

voidfun(int&x)

x=x+1;

voidmain()

{

inta=5;

fun(a);

printf("%d",a);

}

就是在参数前加了一个&就行了

结构体指针作为函数参数

指针数组

:一个普通数组,但其类型由元素类型决定,每一个元素是一个指针。

数组指针:

指向一个数组的第一个元素的指针,通过偏移量可得到该数组指定下目标的元素。

指针函数:

是一个普通函数,但它的返回值是一个指针。

函数指针:

是一个指向一个函数的指针,可以把这个指针作为参数传进去,调用者用这个指针可以调用对应的函数,.NET里的delegate应该是使用这种机制实现的。

其实指针可以实现一些非常叼的功能,当年我就用一个指针数组,保存一些函数的指针,然后把这个数组的指针作为参数传到调用方,调用方可以方便地根据需要,选择数组中不同的指针对应的函数来进行调用,实现了灵活的函数数组,例如这实现一个遥控器功能的程序,把每个按钮的功能写成一个函数,然后的把这些函数的指针装入一个数组,根据数组的下标来调用不同的函实,实现不同的功能。这种做法也是挺美妙的。

不过成也指针,败也指针,事物必然有两面性的,指针的强大,令C程序员牛逼起来,但如果管理得不好,也会很惨的。如上面提出的数组指针,通过确定首元素地址+偏移量来访问元素,若你把这个偏移量搞错了,访问了这个数组以外的地址空间,后果可以是很糟糕的,例如我设计过一个视频监控程序的控制协议,其实就是传一堆结构体过去,然后根据预先的约定,来分解哪一个位置的第几位表示什么操作,我们在很多次使用这个协议的时候,偏移量算错了,改写了错误的位置的值,程序没有出现错误,可产生了错误的控制效果,这比程序崩溃更糟糕,后者还比较容易发现,前者是产生一些错误的效果,更难排查。

函数指针做参数的作用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于指针变量只能作为函数的形参、函数指针做参数的作用的信息别忘了在本站进行查找哦。

最新文章