我会写一个函数,该函数详细说明一个结构,并以递归方式返回在同一个结构中定义的字符数组的长度。 的结构是:如何用递归访问结构的某个元素
typedef struct BinSeq {
char* data;
int dimension;
}BinSeq
数据,字符阵列,可仅具有两个字符类型:“0”和“1”,而尺寸是阵列的长度,但不是“0序列'和'1'。 所以我尝试写这样的功能:
int length(BinSeq* bin_seq) {
int i;
if(bin_seq->data[i] == '0' || bin_seq->data[i] == '1')
{
i++;
return 1 + length(bin_seq->data[i]);
}else
return 0;
}
,但我对此表示怀疑五月。首先由说,编译器造成的:
warning: passing argument 1 of ‘length’ makes pointer from integer without a cast [enabled by default]
return 1 + length(bin_seq->data[i]);
^
recursion.c:13:6: note: expected ‘struct BinSeq *’ but argument is of type ‘char’
int length(BinSeq* bin_seq) {
我怎么能对数据进行工作,如果我要传递给我的功能Binseq * bin_seq?我知道我的代码出错了,但如果我想计算这个密码,我不得不增加变量i,但是我认为它不会增加。我该如何解决这个问题?
通过使用具有自动存储持续时间'i'未初始化的变量的值调用*未定义行为*,这是不确定的。 – MikeCAT
对不起,但我没有明确得到你想要的。 'BinSeq'似乎没有像指向下一个节点的东西。 – MikeCAT
@MikeCat如果我必须传递给我的函数bin_seq,它是BinSeq类型,我该如何处理数组数据? –