gpt4 book ai didi

c - 循环中的双指针

转载 作者:行者123 更新时间:2023-12-01 11:57:00 24 4
gpt4 key购买 nike

对于下面的例子(来自mysql源码),它使用了Field **field。我很难将其视为 Field 的二维数组。

typedef struct st_table_share  
{
.......
Field **field;
....
}

for (Field **field=table->field ; *field ; field++)
{
...

我可以这样想吗,一个表包含很多行,一行包含多个列/字段。所以 *field 表示一行,而 **field 表示一个表?

如果是这样,对于下面的代码

for (Field **field=table->field ; *field ; field++)

当*field 为null 时它会退出,那么如果*field 是一行,*field 怎么可能为null。或者我可以说如果一行有 5 列,并且 field 是第一列,那么 field+4 是最后一列字段,field+5 是列的末尾,这意味着 null,这样 for 循环就会退出?

最佳答案

So *field means a row, and **field mean a table?

在声明语法中,是的。

how could *field be null if *field is a row

如果代码的作者注意保留 field 由空指针终止的不变性,就像 argv 所做的那样。即,n 行的表是 n+1 个指针的数组,最后一个指针必须始终为空。这是一种常见的 C 约定,无需显式计数。

关于c - 循环中的双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6148897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com