C++ 组织从内存读取的数据(用于调试)的最佳方法c++;

C++ 组织从内存读取的数据(用于调试)的最佳方法c++;,c++,c++11,organization,C++,C++11,Organization,我不是一名软件工程师,这意味着我不太擅长组织代码,所以这项任务对您来说可能非常简单 我有一个Q32 C++应用程序,用于32位ARM设备(带有LuBunTU)。该应用程序包含一个窗口,用于调试不同嵌入式设备的外部自定义指令内存(64行32位指令)。我创建了一个函数: bool memoRead(uint32_t *memoRowData, uint8_t memoRowNumber); 此函数用于读取存储在给定行中的数据 我想创建一个不同的函数,它使用给定的函数从内存中读取和显示8行内容。

我不是一名软件工程师,这意味着我不太擅长组织代码,所以这项任务对您来说可能非常简单

我有一个Q32 C++应用程序,用于32位ARM设备(带有LuBunTU)。该应用程序包含一个窗口,用于调试不同嵌入式设备的外部自定义指令内存(64行32位指令)。我创建了一个函数:

bool memoRead(uint32_t *memoRowData, uint8_t memoRowNumber); 
此函数用于读取存储在给定行中的数据

我想创建一个不同的函数,它使用给定的函数从内存中读取和显示8行内容。 我打电话的时候

memoDebug(0);
memoDebug(1);
当我调用

memoDebug(0);
memoDebug(1);
输出应该是存储在第8到15行中的数据

显而易见的方法是创建8个不同的
uint32\t
变量,分别读取每一行,并将它们的值分配给创建的8个不同变量,然后显示/打印它们(我已经完成并成功地完成了)但是我想使用数组或结构之类的东西,以及for循环中的所有内容来改进代码。将来,内存大小可能会显著增加(65536行,每次读取64行或更多,而不是8行)。

组织我的数据的最佳和最有效的方法是什么?我应该如何使用它?


编辑1:显然,当我的内存大小增加时,我会将
memorhead
函数的变量
memoRowNumber
的数据类型更改为
uint32\u t
,如果我通过注释和您在问题中提供的信息正确理解了您的问题,那么解决方案将是创建一个选择循环并将memoRead()的返回值存储在数组中

而不是做:

uint32_t row1 = memoRead();
uint32_t row2 = memoRead();
您可以使用注释中建议的循环:

//read the memo values in a loop
    uint32_t array[8]; //specify size of array or make it dynamic instead of "8"
    for(int i = 0; i < x; i++) {
        array[i] = memoRead();
    }

//print the row values in a loop
    for(int i = 0; i < x; i++) {
        std::cout << array[i] << "\n";
    }
//读取循环中的备忘值
uint32_t阵列[8]//指定数组的大小或使其成为动态的,而不是“8”
对于(int i=0;istd::如果要打印每行的内容,我不知道你说要避免循环是什么意思吗?使用结构,你可以为每行指定一个值,并且每当你要打印该值时,都使用一个行变量。例如,如果你按该顺序读取第1、4和7行,那么你的行数组将类似于[1,4,7]您的值数组将类似于[row1value,row4value,row7value]。当您希望从第x行读取值时,请打印structname.value[structname.row[x]];其中X是您要读取的行?@darclander实际上for循环是我要使用的。我鼓励使用for循环来减少使用的代码行数。该函数应该调用memoRead()函数8次。例如:当我调用memoDebug(2)时,它应该打印row15value、row16value、。。。row23value@darclander为了能够打印该数据,该函数显然应该调用MemorRead()函数8次,MemorOwnNumber值为15、16、。。。23@AdhamzonShukurov所以当调用memoDebug(2)时,保存memoRead()中的每个值进入一个uint32_t,例如uint32_t row1=memoRead();uint32_t row2=memoRead();…?而不是执行循环并将每一行保存到数组索引中?
(int i=0;i<8;i++){array[i]=memoRead();}
(注释中的格式很奇怪)@Darklander是的,没错。我现在这样做是为了确定。但我想用for循环来做,正如你所建议的。回答不错,但我应该如何调用memoRead?memoRead(&array[I],I)或memoRead(array[I],I)?如果我合并这些for循环也可以吗?@AdhamzhonShukurov是的,当然可以合并这些循环!如果不需要,也不需要存储返回值。你怎么说要调用memoRead?memoRead()的返回值不是你正在读取的行的值?如果你读了MeMeRad方法中的所有8行,我建议你阅读如何在C++中使用数组。返回bool,但您提供了我需要的想法。对我来说,这个答案足以解决问题,您回答了我的问题,但如果您可以相应地编辑您的答案,那就太好了。@AdhamzhonShukurov您的意思是添加如何将数组传递给memoRead()?我不太确定你想让我编辑什么你能给我一个建议吗?