
正文
c语言结构体存函数指针 c语言中结构体指针
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
关于C语言结构体指针做函数形参的问题
fun函数c语言结构体存函数指针的第二个参数之所以用指针c语言结构体存函数指针,就是为了能把函数里面对这个参数做c语言结构体存函数指针的改动保存下来
而你如果把*s=a[p];改成s=a[p];效果相当于,改了s的值,使其不再指向参数(函数
外部变量
m)的地址,虽然*s的值是正确的,但实际m的值则没有改变,所以在外面输出的时候,结果和预期不一致了
s=a[p];这个操作本身没有问题
相关问答
Q1: c语言中函数指针是什么 有什么用 举个实例
函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。
函数指针有两个用途:调用函数和做函数的参数。
函数指针的声明方法为:
返回值类型 ( * 指针变量名) ([形参列表]);
如:
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
或者使用下面的方法将函数地址赋给函数指针:
f = func;
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。
下面的程序说明了函数指针调用函数的方法:
#includestdio.h
int max(int x,int y){return (xy? x:y);}
int main()
{
int (*ptr)(int, int);
int a, b, c;
ptr = max;
scanf("%d%d", a, b);
c = (*ptr)(a,b);
printf("a=%d, b=%d, max=%d", a, b, c);
return 0;
}
Q2: C语言指向结构体的指针
C语言中c语言结构体存函数指针的结构体
在C语言中c语言结构体存函数指针,结构体(struct)指c语言结构体存函数指针的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
定义与声明
结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。
结构体成员的引用
有两种方式,英文的句点 . ,一个减号加一个大于号 -。
当结构体是一个指针时要引用结构体的成员就用- 而如果不是指针就用.。
如:
struct msg_st {
int a;
};
struct msg_st msg;
struct msg_st *ms;
msg.a = 10;
ms-a = 20;
c语言结构体存函数指针的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言中结构体指针、c语言结构体存函数指针的信息别忘了在本站进行查找喔。







