c++ - 用分配的最后一个值覆盖数组?

标签 c++ arrays pointers

我有一个指向指针数组的指针。我在下面的 while 循环中分配每一行,while 循环内的 printf 显示每一行都分配了我的 ID 号 1-20。
之后,在 while 循环之外,我遍历数组,每个元素都用 id 20 写入?
任何帮助是极大的赞赏。 (仅供引用 - 我正在使用 Template2doc 库和 example1.c,在底部 - http://www.algonet.se/~thunberg/template2doc/c_version/docs/index.htm)

下面的代码只显示了问题区域,我把剩下的都去掉了。

    char **tableData[500]={NULL};         
    char *myData[500][2]; 


while(rc == SQLITE_ROW){
    tableData[r] = myData[r];
    printf(*tableData[r]); <-- Displays id 1-20 fine
    r=r+1;
}//end while 

tableData[r+1] = NULL;//null terminated array

for (a=0; a<r; a++){
    printf("\n");
    printf(*tableData[a]);  <--Displays 20 elements all of id 20?
}


outputFile=insertTableData(outputFile, dataMarker, fieldMarker, tableData);

最佳答案

您应该创建一些实际编译和重现问题的东西。它不仅会帮助人们帮助您,而且这样做您很可能会自己发现问题。

在您的代码摘录中我们不知道:

  • rc 是什么,它的值是如何设置的,或者它的值将如何改变并因此终止循环
  • r的初始值是多少
  • myData 的实际内容是什么

我根据您发布的内容创建了这段代码,它从两个循环中产生相同的输出。因此,要么我遗漏了您发布的内容,要么您遗漏了一些重要内容。

int main( int argc, char** argv ) {

#define STRING  char *

STRING  dummy = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()";

STRING *tableData[500]={0};         
STRING myData[500][2];

int r=0;

while(r < 20){
        myData[r][0] = dummy+2*r;
        myData[r][1] = dummy+r;
        tableData[r] = myData[r];
        printf(*tableData[r]);
        printf("\n");
        r=r+1;
}//end while 

int a;

for (a=0; a<r; a++){
        printf(*tableData[a]);
        printf("\n");
}


}

关于c++ - 用分配的最后一个值覆盖数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/418887/

相关文章:

c++ - 无法打开包含文件 : 'atlbase.h' : No such file or directory

c++ - 如何重载运算符==?

javascript - 当数字 13 出现但仍返回总和时,使数组求和停止

C++ 练习定义类型

c++ - 将结构化数据类型从 Fortran 传递到 C++

c - 为什么我在 C 代码中使用 x->y = z 而不是 x.y = z?

c++ - 我如何记住这种递归关系?

c++ - 使用带有多个模板参数的 CRTP 时如何声明模板默认值?

javascript - 从数组填充 <dl> 列表

javascript - 删除数据后更新对象的对象