大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你的地址值传递错误,按照我给你修改的试试看,一定要注意你的实参传递的是地址还是具体的值,如果是地址,在子函数中就不要去修改你传递进来的地址。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的惠来网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
int
main(void)
{
int
data=0;
//此处随机分配内存空间,不要用指针
myStack=makeStack(myStack,top);
Push(myStack,3);
Push(myStack,8);
Push(myStack,19);
Push(myStack,31);
Push(myStack,43);
Push(myStack,36);
Pop(myStack,data);//此处,传递的是地址值
printf("%d
",data);
}
int*
Pop(LinkedStack
myStack,int
*data)
{
pStack
cursor=myStack;
if(Stack_Empty())
{
}
else
{
while(cursor-next!=top)
{
cursor=cursor-next;
}
*data=top-data;
//此处,只是在同一个内存空间修改其值,所以不要取地址
top=cursor;
return
data;
}
}
intcmp是和GetKeyFunc_t对应起来的。
而你现在错在了CmpFunc_t这个函数参数上了。
你把怎样的函数参数指针传给了BST_t *newBST?
你没交代清楚啊,你把错误指针传给newBST函数的第一个参数,编译器肯定报错了。你给了那么多代码,关键你把什么传给了BST_t *newBST的第一个参数?给一下你调用这个newBST函数的代码,而且要你传给该函数第一个参数的参数定义。
另外给个建议:定义函数时,记得对传进来的参数进行合法性检验。多加几行代码是很有必要的,能增强函数的健壮性。(微软也好,ISO也好,都对大部分函数设计时要求做必要的合法检验)
C语言中 指针做函数参数传递二维数组有两种基本方法:
1、传递“数组指针”
#include stdio.hvoid output( int (*pa)[3], int n )//这个函数只能输出n行3列的二维数组{ int i,j; for( i=0;in;i++ ){ for( j=0;j3;j++ ) printf("%d ", pa[i][j] ); printf("\n"); }}void main(){ int a[2][3]={ {1,2,3}, {4,5,6} }; output(a,2);}
2、传递“指针数组” 先将二维数组的行指针存储到一个指针数组中,再将指针数组传递到子函数中去。
#include stdio.hvoid output( int *pa[], int row,int col ) //这个函数更通用,但调用前,要做好准备工作。{ int i,j; for( i=0;irow;i++ ){ for( j=0;jcol;j++ ) printf("%d ", pa[i][j] ); printf("\n"); }}void main(){ int a[2][3]={ {1,2,3}, {4,5,6} }; int i; int *pa[2]; for( i=0;i2;i++ ) pa[i]=a[i]; output(pa, 2, 3);}