C语言中指针函数如何调用 c语言指针函数调用例子

如何调用指针函数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();
【C语言中指针函数如何调用 c语言指针函数调用例子】cout"your name is: "nameendl;
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=p1; p1=p2; p2=temp;
}
int main()
{
int a=2,b=3;
swa(a,b);//传递地址
couta""b;
return 0;
}
这个函数并不会交换a,b的值
C 语言中指针函数是如何调用的??整个程序的目的是对一组数据进行求最大值、最小值或平均值的操作C语言中指针函数如何调用 , 通过输入的指令进行相应的操作 。按照不用函数指针的思路C语言中指针函数如何调用,程序大概会写成这样C语言中指针函数如何调用:(以下为伪代码)
最大值函数{...}
最小值函数{...}
平均值函数{...}
main{
输入dC语言中指针函数如何调用,则调用 最大值函数
输入x,则调用 最小值函数
输入p,则调用平均值函数
}
不过可以发现如下几点:
· 三个函数的参数形式与返回值都是完全一样的
· 按上述方法写代码,每次调用都要写清楚参数,略显啰嗦
所以就使用函数指针来重新改写代码
GetOperation这个函数本身,就是根据输入指令找到对应的 操作函数并作为函数指针返回它,然后main里直接通过函数指针调用,调用代码只需要写一次,而且甚至不用关心这个函数指针代表的到底是哪个函数
这个程序里只有三个对数据的操作所以函数指针的优点不是很明显 。假设有多大100种对数据的操作,如果不使用函数指针,就要不停地写if else if else if...,使用函数指针,甚至可以事先建立一个指令字符与操作函数指针的对应列表,运行时直接在列表里搜索抽取 , 代码就显得干净利索
GetOperation(c)(dbData,iSize)这句话的具体执行操作是:
(下面假设输入了c='d')
首先执行GetOperation('d'),该函数返回得到GetMax(的指针),再执行GetMax(bData,iSize),即对数据求最大值的操作,函数返回得到最大值
C语言中函数指针用法函数在内存中有一个物理位置C语言中指针函数如何调用,而这个位置是可以赋给一个指针的 。一零点函数的地址就是该函数的入口点 。因此,函数指针可被用来调用一个函数 。函数的地址是用不带任何括号或参数的函数名来得到的 。(这很类似于数组地址的得到方法 , 即,在只有数组名而无下标是就得到数组地址 。)

推荐阅读