十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
根据参数类型以及函数实现的功能综合判断。
目前创新互联建站已为上千多家的企业提供了网站建设、域名、虚拟空间、网站改版维护、企业网站设计、昂昂溪网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
注意不能单单看是否为指针。
要传递类型为A的值,如果参数类型是A*,那么为传地址,反之,如果参数类型是A,那么是传值。
比如,要传递int型参数:
1 传值:
void func(int a);
2 传地址:
void func(int *a);
而传递char *型参数。
1 传值:
void func(char *a);
2 传地址:
void func(char **a);
同样是char *类型的参数,有可能是传值,也有可能是传地址。具体取决于函数实现功能。
可以通过函数指针(也就是你说的函数地址)调用,可以这样使用:
#include
int
fun(int
a)
{
printf("a
=
%d\n",
a);
printf("hello
world\n");
}
int
main()
{
int
(*pFun)(int
a);
pFun
=
fun;
(*pFun)(123);
return
0;
}
输出结果:
123
hello
world
f(strcut A t) 参数是一个结构体,而结构体说到底就是用户自定义的组合的变量类型。是一个变量。所以这里是按照传数值的方式进行参数传递。
f(struct STU a[])参数是一个结构体数组,数组都是按照传地址的方式进行参数传递的。
若还不能理解,就把Struct A t看成是int t 而 struct STU a[]相当于 int a[].这样应该就好懂了
关于传递参数类型,首先要看函数的定义。不要去看函数的调用。