首页 > 编程知识 正文

c语言如何初始化数组,C语言指针怎么初始化

时间:2023-05-05 03:25:15 阅读:61807 作者:2394

很多时候,当我们提到指针函数和函数指针时,很多人都不理解。 用小编详细介绍c语言中函数指针、指针函数、函数指针的区别。

c语言指针函数定义:

函数指针是指向函数的指针变量。 因此,“函数指针”本身必须首先是指针变量。 但是,该指针变量是指函数。 它在这里是指函数,因为指针变量可以指向整数变量、字符类型和数组。 如上所述,c在编译时,每个函数都有一个条目地址。 此条目地址是函数指针指向的地址。 如果存在指向函数的指针变量,则可以使用该指针变量调用函数。 这些概念几乎一致,以便指针变量可以引用其他类型变量。 函数指针有两种用途:函数调用和函数参数。

函数类型(*指针变量名称) )形参数列表);

函数类型说明函数的返回类型。 「()”的优先级高于“*”,因此指针变量名称之外的括号是必不可少的。 后面的“参数列表”表示指针变量指向的函数的参数列表。

例如:

int(f ) ) int x );

双精度(* ptr ) )双精度x;

定义函数指针时请小心。

函数指针及其所指函数的自变量的数量和类型应该为-;

函数指针的类型和函数的返回类型也必须匹配。

函数指针分配:

函数名称和数组名称一样表示函数代码的起始地址,所以分配值时只要直接将函数指针指向函数名称即可。

例如,

intfunc(intx );

int(f ) ) int x );

f=func;

赋值时的函数func没有括号也没有参数。 func表示函数的起始地址,因此赋值后,指针f指向函数func(x )的代码的起始地址。

指针函数和函数指针的区别:

1、指针函数是指带有指针的函数。 也就是说,本质是函数。 函数的返回类型是指针的类型

类型标识符*函数名称(参数表)

int*f(x,y );

首先是函数,但是这个函数的返回值是地址值。 函数的返回值必须由同一类型的指针变量接受。 也就是说,指针函数必须具有函数的返回值,并且在度量函数中,函数的返回值必须分配给相同类型的指针变量。

显示:

浮动* Fun (;

浮动* p;

p=fun(a;

请注意指针函数和函数指针表示方式的差异。 请不要混淆。 最简单的区分方法是,查看函数名称前面的指针*编号是否括在括号()中。 如果包含,则为函数指针,反之为指针函数。

详细地说吧! 请看以下内容

指针函数:

当函数声明返回值为指针时,它将在调用函数中返回地址,以便在实际需要指针或地址的表达式中使用。

格式:

类型说明符*函数名称(参数) )

当然,因为返回地址,所以类型说明符通常是int。

例如,int *GetDate (;

int*AAA(int,int );

函数常用于返回地址值和返回数组的元素地址。

int*getdate(intwk,int dy );

主() )

{

int wk,dy;

德奥

{

printf(enterweek(1-5) day )1-7) n );

扫描(% d % d,wk,dy );

}

while(wk《1||wk》5||dy《1||dy》7;

printf(%dn、*getdate ) wk、dy );

}

int*getdate(intwk,int dy ) )。

{

静态int calendar [5] [7]=

{

{1、2、3、4、5、6、7}、

{8、9、10、11、12、13、14},

{15、16、17、18、19、20、21},

{22、23、24、25、26、27、28},

{ 29,30,31,-1}

(;

返回日历[ wk-1 ] [ dy-1 ];

}

程序应该很好理解。 子函数返回数组中某个元素的地址。 输出的是这个地址的值。

2、函数指针是指向函数的指针变量,即本质上是指针变量。

int(f ) ) int x );

f=func;

指向函数的指针包含函数的地址,可以调用该函数。 声明的格式如下:

类型说明符(*函数名称()参数() ) ) ) ) ) ) ) )。

其实这里不能叫函数名,应该叫指针的变量名。 此特殊指针指向返回整数值的函数。 指针的声明钢笔和对函数的声明是一致的。

指针名称和指针运算符外部的括号会更改默认运算符的优先级。 如果没有圆括号,它将是返回整数指针的函数的原型声明。

例如:

void(*FPTR ) );

有两种形式可以将函数的地址分配给函数指针:

fptr=FuncTIon;

fptr=FuncTIon;

地址运算符不是必需的。 因为只有一个函数标识符表示地址,并且对于函数调用,必须包含用括号括起来的参数表。

有两种从指针调用函数的方法:

x=(*fptr ();

x=fptr (;

第二种格式看起来和函数调用一样。 但是,一些程序员倾向于使用第一种格式,因为他们清楚地表明要用指针而不是函数名称来调用函数。 举个例子吧。

语音(*功能) );

语音文件功能(,EditFunc );

主() )

{

funcp=FileFunc;

(*funcp ) );

funcp=EditFunc;

(*funcp ) );

}

Void文件Unc ()

{

文件函数(printf );

}

Void编辑函数()

{

printf (编辑函数;

}

程序的输出如下。

文件函数

编辑函数

的主要区别之一是指针变量,另一个是函数。 使用时必须弄清楚才能正确使用

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