c语言初级指针函数怎么调 c语言指针初始化的几种方法

C语言调用函数指针

并不是不规范的问题,你子程序写法只能在子程序中输出正确的数据,而在主函数中无法得到交换过的x和y的值。参考程序运用指针让子程序去读写a和b的值,在子程序执行完成后,a和b的值确实得到了交换。

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的昂仁网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

你的程序中子程序采用的不是指针类型参数,这样子程序无法将交换过后的值传回来。

C 语言中指针函数是如何调用的??

整个程序的目的是对一组数据进行求最大值、最小值或平均值的操作,通过输入的指令进行相应的操作。按照不用函数指针的思路,程序大概会写成这样:(以下为伪代码)

最大值函数{...}

最小值函数{...}

平均值函数{...}

main{

输入d,则调用 最大值函数

输入x,则调用 最小值函数

输入p,则调用平均值函数

}

不过可以发现如下几点:

· 三个函数的参数形式与返回值都是完全一样的

· 按上述方法写代码,每次调用都要写清楚参数,略显啰嗦

所以就使用函数指针来重新改写代码

GetOperation这个函数本身,就是根据输入指令找到对应的 操作函数并作为函数指针返回它,然后main里直接通过函数指针调用,调用代码只需要写一次,而且甚至不用关心这个函数指针代表的到底是哪个函数

这个程序里只有三个对数据的操作所以函数指针的优点不是很明显。假设有多大100种对数据的操作,如果不使用函数指针,就要不停地写if else if else if...,使用函数指针,甚至可以事先建立一个指令字符与操作函数指针的对应列表,运行时直接在列表里搜索抽取,代码就显得干净利索

GetOperation(c)(dbData,iSize)这句话的具体执行操作是:

(下面假设输入了c='d')

首先执行GetOperation('d'),该函数返回得到GetMax(的指针),再执行GetMax(bData,iSize),即对数据求最大值的操作,函数返回得到最大值

函数指针怎么调用

1、首先打开vs2014,新建一个项目。

2、添加头文件。

3、添加main主函数。

4、定义一个函数addTwoNumbers。

5、将addTwoNumbers函数地址赋值给ptr_sum。

6、调用函数指针求和。

7、运行程序,看看结果。

注意事项:

因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。

如何调用指针函数

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: "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语言指针初始化的几种方法
网址分享:http://ybzwz.com/article/doissgd.html