c++ - 谁能给我解释一下这段代码?

标签 c++ arrays pointers

aCCB->C16_ArgInfo(aCCB->InstHdl,2,&tType2,&tOpt2,&tLen2,NULL,&tCount2);

if (tType2 == _TypeAlpha &&
    tOpt2  == (_ArgOptVAR | _ArgOptARRAY))
{
    /* read array */
    tBuf = static_cast<char*>(malloc(tLen2));
    aCCB->C16_ArgRead(aCCB->InstHdl,2,0,tBuf);

    tTab  = static_cast<char**>(malloc(sizeof(char*) * tCount2));
    tSize = tLen2 / tCount2;
    *tTab = tBuf;

    /* define sort table */
    for (tLoop = 1; tLoop < tCount2; ++tLoop)
        tTab[tLoop] = tTab[tLoop-1] + tSize;

我所理解的是 aCCB->InstHdl 包含一些转换为字符串数组 (char**) 的原始数据。

我不明白的是最后一个循环。它有什么作用?它是做什么用的?我不得不承认我的 C++ 知识是完全不存在的...

最佳答案

它循环遍历数组,分配上一次迭代的值加上 tSize。那是什么意思或为什么……我他妈的怎么知道?

我不会因为无法理解该代码而对自己太苛刻。很难读。

编辑:

哦,伙计。只需阅读对 OP 的评论之一,然后再查看它。这段代码太可怕了!!!

这似乎是正在发生的事情: 一个数组被读入 tBuf。 然后创建一个数组数组来保存 tCount2 数组。 然后将 tSize 初始化为 tLen2/tCount2,这基本上创建了 tCount2 项……您将看到。

然后将 tBuf 指针分配给 tTab“数组的数组”中的第一个元素。

现在是 for 循环....for 循环基本上拆分系列中的第一个元素,并在每个 tLen2/tCount2 段向主 tBuf 提供点。

你得到的是...

[0] [1] [2] [3] [4]
 |   |   |   |   |
 v   v   v   v   v
|datadatadatadatadata|

啊!!!

不,它不会导致任何未定义或未指定的行为。这真的很丑。

关于c++ - 谁能给我解释一下这段代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4306236/

相关文章:

pointers - 在 golang 中具有指向 0 值的指针的深度复制结构

c++ - C++ 应用程序的仪表控制

c++ - 简单的 GUI IDE?

python - Python 中未知大小的二维数组

c - C 中所有固定长度的二进制排列

c++ - 通过指向其第一个元素的指针将数组分配给数组

c - 指针变量存储什么?

C++11 main() 返回时终止线程?

python - 在 C++ 中保存数据,从 Python 加载 - 推荐的数据格式

java - TXT 中的升序整数到数组