成都网站建设设计

将想法与焦点和您一起共享

c语言结构体与函数指针 c语言 结构体 指针

C语言结构体内部的函数指针有什么意义

//在结构体中包含函数指针,

成都创新互联公司,为您提供网站建设公司成都网站制作公司、网站营销推广、网站开发设计,对服务主动防护网等多个行业拥有丰富的网站建设及推广经验。成都创新互联公司网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!

//这样,可以使用结构体,调用函数。

//这个有点像C++的面向对象的类 

//十分好用。 

#include "stdio.h"  

struct DEMO  

{  

int x,y;  

int (*func)(int,int); //函数指针  

};  

int add2(int x,int y)  

{  

return x+y;  

}  

int main()  

{

int ret=0;

struct DEMO demo;  

demo.func=add2; //结构体函数指针赋值  

ret=demo.func(3,4);

printf("func(3,4)=%d\n",ret);  

}

c语言结构体函数指针怎么赋值

指针就是指向内存的某个地址的一个变量。

结构体指针就是这个指针变量的值必须指向存放该结构体的内存位置。

当这个指针没有任何指向时,可以赋值为null值,但是改指针不可使用,程序中应该做判断。下面是一些赋值演示。

struct student{

int id;

int score;

} aaa;

struct student *p = null;//结构体指针p初始化赋值为null

struct student *p2=aaa;//p2指向aaa

struct student *p3=(struct student *)malloc(sizeof(struct student));//内存中申请一个结构体空间,并将地址强制转换为结构体指针变量赋值给p3

C语言结构体程序子函数指针的使用

有多处错误,主程序中只有一处,但调用函数错得挺多的,最主要的是对结构指针的运用,

stu *p 下,引用其数组不能用(*p)[xx],因为p本身就是结构数组的首址,所以直接用p[xx]即可访问定义的所有单元。

以下将你的程序依原风格进行修改,主程序中将修改前的错误代码罗列于右,而order函数因为修改的地方多所以不再提示修改处:

#includestdio.h

typedef struct student

{

int num;

char name[20];

int a,b,c;

double ave;

}stu;

stu order(stu *p,int n);

int main()

{

stu s[6]; /*改为s[5]*/

int i;

for(i=0;i5;i++)

{

printf("input num:");

scanf("%d",s[i].num);

getchar();

printf("name:");

scanf("%s",s[i].name); /*原为scanf("%s",s[i].name); */

printf("a\tb\tc\n");

scanf("%d%d%d",s[i].a,s[i].b,s[i].c); s[i].ave=(s[i].a+s[i].b+s[i].c)*1.0/3;

}

order(s,5);

printf("num\tname\ta\tb\tc\n");

for(i=0;i5;i++)

{

printf("%d\t%s\t%d\t%d\t%d\t%lf\n",s[i].num,s[i].name,s[i].a,s[i].b,s[i].c,s[i].ave);

}

return 0;

}

stu order(stu *p,int n)

{

int j,k;

stu index;

for(j=0;jn-1;j++)

for(k=j+1;kn;k++)

if(p[j].avep[k].ave)

{

index=p[j];

p[j]=p[k];

p[k]=index;

}

}

c语言函数指针作为结构体的问题

首先解释一下

st

的问题吧:st

就是取结构体的

st

的地址传给结构体内的函数

p

o,

根据前面

st

的定义,也就是传给

print

power。这样

print

power

函数就可以读取结构体中的

i

x

值。

然后沿着各个思路,可以写出

print

power

函数,如下:

void

print(ST

*st){

printf

("%g",

st-x);

}

void

power(ST

*st){

int

k;

double

y=1;

for

(k=0;k

i;k++)

y*=st-x;

st-x

=

y;

}

不过这里有个问题,就是你之前的

struct

中定义的函数指针是没有参数的,但是主函数调用时是有参数的,这是矛盾的呀。要改一下:

struct

ST{

int

i;

double

x;

void

(*o)(ST*);

void

(*p)(ST*);

}

;

就没有问题了。


本文标题:c语言结构体与函数指针 c语言 结构体 指针
文章URL:http://chengdu.cdxwcx.cn/article/ddechdj.html