C语言中如何对ARRAY使用动态内存

来源:百度知道 编辑:UC知道 时间:2024/09/23 02:32:50
我写了一个方程大概如下,*b 会被带入到function里面,然后return *b。但是问题是,我同时也想return B 被改写的次数i,而这个数字i是进入FUNCTION前并不知道的。 因为不能return 两个值,这里我是否应该用动态内存呢?若是请问如何使用?或者有其他方法?最好能写出代码供参观之用。谢谢
main
char *b[100];
function (char *b[]);
char *function (char*b[])
{
...
for (i<...)
b[i]=...
return b;
}

若要返回i,简单点处理的话,可给函数多加个指针参数用来返回,如:
char *function (char *b[], int *iRet)
在函数返回前,给*iRet赋值,如:
...
*iRet=i;
return b;

在主函数中调用时,多传递个变量,如:
int i;
...
function (char *b[], &i);// 这样i值可通过函数更改。

另外,你题目中说return *b,而代码中是return b
这里b应该是字符串指针的一维数组吧。
如果是return b的话,可能没太大意义。当然,有没有意义,具体还得看代码。

#include <stdio.h>
typedef struct {
char *str;
int n;
}info;
function (char *b[]);

main()
{
char *b[100];
info *p;
p=function(char *b[]);
......
}
info *function(char *b[])
{
int i;
info d;
...
for (i<...)
b[i]=...
d.str=b;
d.n=i;
return &d;
}

如果需要返回两个以上的值,建议申请一个结构体,这样的话把你想返回的东西放到里面,在函数中返回一个结构体指针就可以了。