
返回值类型 (* 指针变量名)([形参列表])
1、int func(int x)/* 声明一个函数 */
2、int (*f) (int x)/* 声明一个函数指针 */
3、f=func/* 将func函数的首地址赋给指针f */
二、函数指针的用法:
函数指针的应用:(*指针变量名)(参数列表)
如:int c=(*ptr)(a,b)/* 函数指针 的使用*/
在C语言中,函数本身不是变量,但是可以定义指向函数的指针,也称作函数指针,函数指针指向函数的入口地址。这种类型的指针可以被赋值、存放在数组中、传递给函数以及作为函数的返回值等等。
扩展资料:
指针函数和函数指针的区别:
1、这两个概念都是简称,指针函数是指返回值是指针的函数,即本质是一个函数。我们知道函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。
2、返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址相当于一个指针。比如函数返回一个整型值,实际上也相当于返回一个指针变量的值,不过这时的变量是函数本身而已,而整个函数相当于一个“变量”。
参考资料来源:百度百科-指针
参考资料来源:百度百科-函数指针
1.如果是返回值是指针char* getname()
{
char* pname=new char[23] //返回指针必须是函数释放后并未释放的内存空间,
cout<<"input your name:\n" //一般返回两种情况,一是在函数中像该函数一样动态分配堆内存
cin.getline(pname,22) //二是返回指针指向参数中地址,如: int* max(int a,int b) { return &a}
pname[22]='\0'
return pname
}
int main()
{
char* name=getname()
cout<<"your name is: "<<name<<endl
delete []name //记得动态释放分配内存
return 0
}
2.参数是指针类型
常见的是通过指针或引用交换两个数的值
void swa(int* p1,int* p2)
{
int temp=*p1*p1=*p2*p2=temp
}
int main()
{
int a=2,b=3
swa(&a,&b) //传递地址
return 0
}
附解:你可以把指针看做是一种复合类型,它之所以可以修改参数值,本质是因为
对指针解除引用*p形式是 *** 作的参数所存数据内存空间,但如果它不解除引用,它
并不会修改参数的值:如
void swa(int* p1,int* p2) //函数意思是最初始在函数参数块中定义两个指针p1,p2,使
{ //p1指向a,p2指向b,下面函数体只是使指针指向地址改变,成了
//p1指向b,p2指向a。但并未对a,b内存空间 *** 作,当函数调用结束后,指针p1,p2
//也释放了,所以并未起任何作用
int* temp
temp=p1p1=p2p2=temp
}
int main()
{
int a=2,b=3
swa(&a,&b) //传递地址
cout<<a<<" "<<b
return 0
}
这个函数并不会交换a,b的值
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)