c语言函数间传递指针 c语言指针传递和值传递的区别

关于C语言函数传递指针参数,帮我看看我的程序

你的地址值传递错误,按照我给你修改的试试看,一定要注意你的实参传递的是地址还是具体的值,如果是地址,在子函数中就不要去修改你传递进来的地址。

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的惠来网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

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;

}

}

c语言传递函数指针

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);}


当前标题:c语言函数间传递指针 c语言指针传递和值传递的区别
文章网址:http://pwwzsj.com/article/ddggeps.html