c编程问题,关于子函数与主函数之的数据传递!

来源:百度知道 编辑:UC知道 时间:2024/06/21 14:18:53
形如子函数void XX(type *T)子函数作用是创建一个如,树、链表等的抽象数据类型,内部有用到malloc等,如T=(type *)malloc(sizeof(type))再赋值什么的……
在主函数:
void main()
{
type *t;
XX(t);
print(t);//里面没东西,输入乱码
},但创建的东西却没有传递到主函数,有查看主函数与子函数的指针内容,主中的t与子中的T地址不一样!
上面的问题遇到很多次了,都不得不改成用return返回地址如t=XX()!
但在很多书上都是像我上面写的那样传递的数据的,(实际上有时却也能行,但通常我写到这都不行了)!
请说明原因和解决方法!谢谢!
一楼的的:书上都 是这样写的,比如什么什么抽象数据类型的Ctrate函数都 是这样,还有比如说两个矩阵相加得第三个矩阵形如:add(matrix *A,matrix *B,matrix *C)意思是C=A+B,其中C却是在子函数中创建,主函数中用到!二楼的:我有能运行的例子!http://hi.baidu.com/362111880/blog/item/b2dda923f7edbe41ad34de24.html

如果是C语言的话,传一个指针进去子函数,是复制的,
不会影响主函数中的指针,
但是你仍然想要子函数能改变主函数中的指针,
那么要不就当作函数返回值返回t = XX();
要不就传入双重指针:
函数add(matrix *A, matrix *B, matrix **C);
函数调用add(matA, matB, &matC);
在add函数内部*C就相当于matrix *类型

因为主函数中的t是实数,而XX函数的参数是虚数,虚数的值不能传给实数,另外,XX(t)不能对t作处理,因为一个函数如果不是把返回值赋值给一个数,是不能改变这个数的,需要赋值操作才行.