函数指针作为形参(指针变量能只能作为函数的形参不可以作函数的实参对还是错)

本文目录
指针变量能只能作为函数的形参不可以作函数的实参对还是错
错,指针变量既可以作为函数的形参,也可以作函数的实参。
当数组名作函数的参数时,传递到是数组的起始地址,形参是用来接受从实参传递过来的实参数组的地址的。因此,形参应该是一个地址变量(只有指针才能存放地址)。
数组名就是数组的首地址,实参向形参传递数组名实际上就是传送数组的地址,形参得到该地址后也指向同一数组。这就好像同一件物品有两个彼此不同的名称一样。同样,指针变量的值也是地址,数组指针变量的值即为数组的首地址,当然也可以作为函数的参数使用。
指针作为实参,指针作为形参:
扩展资料:
在c语言中实参和形参之间的数据传输是单向的“值传递”方式,也就是实参可以影响形参,而形参不能影响实参。指针变量作为参数也不例外,但是可以改变实参指针变量所指向的变量的值。
指针实质是一个内存地址,这个内存地址就是指针的指向地址,这个地址及其以后的地址中的内容就是我们说的指针指向的内容。函数在传递参数时传递的一定是形参。
参考资料来源:百度百科-指针变量
怎样用函数指针做参数
列了几个简单的应用:
//形式1:返回类型(*函数名)(参数表)
#include《cstdio》
char (*pFun)(int);
char glFun(int a){printf(“just a test,hehe\n“); return ’a’;}
void main()
{
pFun = glFun;
(*pFun)(2);
}
//形式2:typedef 返回类型(*新类型)(参数表)
typedef char (*PTRFUN)(int);
PTRFUN pFun;
char glFun(int a){ return;}
void main()
{
pFun = glFun;
(*pFun)(2);
}
//形式三
#include《iostream》
using namespace std;
class CA
{
public:
char lcFun(int a){cout《《“just a test “《《a《《endl; return ’a’; }
};
typedef char (CA::*PTRFUN)(int);
int main()
{
CA ca;
PTRFUN pFun;
pFun=&CA::lcFun;
//ca.lcFun(2);
(ca.*pFun)(2);
return 0;
}
用指针变量作为函数参数
#include 《stdio.h》
void swap1(int x,int y),swap2(int *px,int *py),swap3(int *px,int *py);
int main(void)
{
int a=1,b=2;
int *pa=&a,*pb=&b;
swap1(a,b);
printf(“s1:a=%d,b=%d\n“,a,b);
a=1,b=2;
swap2(pa,pb);
printf(“s2:a=%d,b=%d\n“,a,b); a=1,b=2;
swap3(pa,pb);
printf(“s3:a=%d,b=%d\n“,a,b); return 0;
}
void swap1(int x,int y)
{
int t; t=x; x=y; y=t;
}
void swap2(int *px,int *py)
{
int t; t=*px; *px=*py; *py=t;
}
void swap3(int *px,int *py)
{
int *pt; pt=px; px=py; py=pt;
}
扩展资料
对象与类
对象(Object)
Visual Basic.NET 具有“面向对象”的特性,Visual Basic.NET 应用种程序的基本单元是对象,用 Visual Basic.NET 编程就是用“对象”组装程序。这种“面向对象”的编程方法与传统的全部用代码编制程序的方法有很大区别,就像用集成电路芯片组装电视机和用三极管,二极管组装电视机的区别一样。显然,“面向对象”的编程方法比传统的编程方法更简单,更方便,并且编写出的程序也更加稳定。因此,“对象”可以被看做 Visual Basic.NET 程序设计的核心。
在 Visual Basic.NET程序设计中,对象中还可以包含头,手,腿,脚等部位,其中的每个部位又可以单独作为作为被研究的对象。在 Visual Basic.NET程序设计中,整个应用程序就是一个对象,应用程序中又包含着窗体(Form),命令按钮(Command),菜单(Menu)等对象。
类(Class)
在 Visual Basic.NET中,对象是由类创建的,因此对象可以说是类的具体实例,这就好比是蛋糕和做蛋糕的模具之间的关系。
各种不同的对象分属于各种不同的种类。同一类对象可能具有一些不同的特征(或是说同一类对象不一定具有完全相同的特性);具有某些相同的特性的对象,不一定是同一类对象。
参考资料来源:百度百科-VB
c++中允许使用指向函数的指针作为另一个函数的形参吗
允许,而且C语言经常这样使用的,不过在C++增加了函数对象,加强了函数作为参数的功能,在我的编译器里提示是函数参数错了,我也没见过参数这样写的:void process(int (*p)(int,int),a,b) 改成 void process(int (*p)(int,int),int a,int b)

更多文章:
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00







