首页 > 编程知识 正文

c语言结构体数组,c语言指针传参

时间:2023-05-06 06:53:01 阅读:61869 作者:566

程序定义了函数,编译时,编译系统会为函数代码分配存储空间。 此存储区域的起始地址称为此函数的指针。 对于系统给函数分配内存的情况,度娘回答如下。 源代码编译成二进制文件后,会确定其中的变量、函数的虚拟地址(即内存空间地址),操作系统在运行时为其分配物理内存,并添加虚拟地址到物理地址的映射。

一个过程(执行的程序)可以分成几个阶段。 代码段、数据段、积累段等。 在此,函数操作的空间(也就是局部变量的空间)位于积累级。 函数分配内存大小,实际上只是累积段指针的变化。

函数指针的示例如下:

#包含

int main () )

{

intmax(int,int );

int(*p ) ) int,int );

int a、b、c;

p=max;

scanf('%d、%d )、a、b );

c=(*p () a,b );

返回0;

}

intmax(intx,int y ) )。

{

返回xy? x:y;

}

从例子可知,对函数指针变量的定义方法是类型名(指针变量) (函数参数表列);

需要注意的是: 1、指向函数的指针变量只指向定义时指定类型的函数。 例如,*p和max函数的类型都是int

2、要用指针调用函数,首先指针变量必须指向该函数。 例如,p=max;

3、给函数指针变量赋值时,只需给出函数名称就不必给出参数

4、指向函数的指针变量不能进行算术运算。 例如,p、p n等不合法

5、在用函数指针变量调用函数的情况下,可以使用() p ) )而不是函数名称,如c=((p ) ) ) ) a,b ) )。

使用函数指针变量的优点:使用函数名称调用函数时,只能调用指定的一个函数,但使用指针变量调用函数更灵活,可以根据情况按顺序调用不同的函数

例子如下。

#包含

int main () )

{

intmax(int,int );

intmin(int,int );

int(*p ) ) int,int );

int a、b、c、n;

scanf('%d、%d )、a、b );

printf(pleaseinput1or2: );

scanf('%d ',n );

if(n==1) p=max;

ELSEif(n==2) p=min;

c=(*p () a,b );

返回0;

}

intmax(intx,int y ) )。

{

返回xy? x:y;

}

输入(输入,输入y ) )。

{

返回xy? y:x;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。