C语言行指针做函数参数 c语言指针在函数中的用法

c语言中函数指针作为参数与函数的嵌套您好,针对这个问题
Status
InOrderTraverse(BiTree
T
,Status(*Visit)(TElemType
e))函数中第2个参数是一个指向函数的指针,这样做的目的是为了程序的灵活性 。试想如果给你一个整型数100,要求分别按照10进行、16进制输出,你可以写一个输出10进制函数与输出16进制函数,当你有需要输出16进制时 , 只需要将16进制函数地址传给Visit就行,而不需要改变InOrderTraverse函数,这种做法灵活,也符合软件工程编程思想 。
另外,InitStack(S);
就是函数调用,这种就在InOrderTraverse已经写死了,如果有几种初始化情况的话 , 就得在InOrderTraverse增加判断条件来加以区分 , 这样增加了代码量 。
希望我的回答对您帮助!
C语言指针作为函数参数,返回值为0那你应该用指针的指针才行,然后函数返回指针 。
double *a(double **p)
{
*p=.... //修改指针所指向的地址
...
return *p; //返回指针p指向的地址
}
int main()
{
double *p=... //初始化指针p
double *q;//用于接收改变的指针
...
q=a(p);//将指针p的地址传递给a
...
return 0;
}
如果是用作dll的话,那么你应该使用和相应语言兼容的类型才行
C语言中 指针做函数参数传递二维数组#include stdio.h
void fun(int (*p1)[3],int (*p2)[3]);
int main()
{
int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;
int p2[3][3] = {0};
int i = 0, j = 0;
fun(p1,p2);
for(i = 0;i3;i){
for(j = 0;j3;j){
printf("%d ",*(*(p2 i) j));
}
printf("\n");
}
return 0;
}
void fun(int (*p1)[3],int (*p2)[3])
{
int i = 0,j = 0;
for(i = 0;i3;i){
for(j = 0;j3;j){
*(p2[j] i) = *(p1[i] j);
}
}
}
扩展资料:
函数指针的声明方法为:
返回值类型 ( * 指针变量名) ([形参列表]);
其中,“返回值类型”说明函数的返回类型 , “(指针变量名 )”中的括号不能省,括号改变了运算符的优先级 。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表 。例如:
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
或者使用下面的方法将函数地址赋给函数指针:
f = func;
赋值时函数func不带括号 , 也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址 。
参考资料:
百度百科-函数指针
关于C语言结构体指针做函数形参的问题fun函数的第二个参数之所以用指针 , 就是为了能把函数里面对这个参数做的改动保存下来
而你如果把*s=a[p];改成s=a[p];效果相当于,改了s的值 , 使其不再指向参数(函数
外部变量
m)的地址,虽然*s的值是正确的,但实际m的值则没有改变,所以在外面输出的时候,结果和预期不一致了
s=a[p];这个操作本身没有问题
c语言编程 。指针作为函数参数,实现对输入的两个整数按大小顺序输出.下面有我写的编程,帮我指一下错误第六七行改为p1=a,p2=b
另C语言行指针做函数参数:swap函数中C语言行指针做函数参数 , 将所有p1,p2前面都加个 * 号
【C语言行指针做函数参数 c语言指针在函数中的用法】C语言行指针做函数参数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于c语言指针在函数中的用法、C语言行指针做函数参数的信息别忘了在本站进行查找喔 。

    推荐阅读