参数在循环后丢失值

The parameter lost value after a loop

本文关键字:循环 参数      更新时间:2023-10-16
void genomicStatistic(int numberOfRow, int numberOfColumn, char arr[7][8]) {
int P[4][100];
char C[100];
int max = 0;
// 0. Set the initial value 
for (int i = 0; i < numberOfRow; i++) {
    for (int j = 0; j < numberOfColumn; j++) {
        P[i][j] = 0;
        cout << numberOfRow << endl;
        cout << numberOfColumn << endl;
    }
}}

void main() {
char arr[7][8]{
    {'A' ,'T' ,'C' ,'C', 'A',' G', 'C', 'T'},
    {'A' ,'T' ,'C' ,'C', 'A',' G', 'C', 'T'},
    {'A' ,'T' ,'C' ,'C', 'A',' G', 'C', 'T'},
    {'A' ,'T' ,'C' ,'C', 'A',' G', 'C', 'T'},
    {'A' ,'T' ,'C' ,'C', 'A',' G', 'C', 'T'},
    {'A' ,'T' ,'C' ,'C', 'A',' G', 'C', 'T'},
    {'A' ,'T' ,'C' ,'C', 'A',' G', 'C', 'T'},
};
genomicStatistic(7, 8, arr);   }

在//0. 处,我尝试设置数组的初始值,但在编译完成循环后,行数和列数为 0。我不明白为什么会发生这种情况,请帮忙。

int P[4][100];是为

第一个索引的0..3中的值定义的。您使用 0..6 中的值。 无论如何,PC都是多余的。

顺便说一句,您并没有真正使用C++。这是一种更C++的方式

#include <iostream>
#include <vector>
#include <string>
void genomicStatistic(const std::vector<std::vector<std::string>> &arr) {   
    for (const auto &row : arr) {
        for (const auto item : row) {
            std::cout << item << " ";
        }
        std::cout << std::endl;
    }
}
void main() {
    std::vector<std::vector<std::string>> arr{
        {"A", "T", "C", "C", "A", " G", "C", "T"}, 
        {"A", "T", "C", "C", "A", " G", "C", "T"},
        {"A", "T", "C", "C", "A", " G", "C", "T"},
        {"A", "T", "C", "C", "A", " G", "C", "T"},
        {"A", "T", "C", "C", "A", " G", "C", "T"},
        {"A", "T", "C", "C", "A", " G", "C", "T"},
        {"A", "T", "C", "C", "A", " G", "C", "T"},
    };
    genomicStatistic(arr);
}
因为你

使用副本,所以当你完成你的函数时,这个副本将删除(参数中的C和C++使用copy传递值不喜欢java或其他语言使用引用(,你应该在你的参数中使用引用或指针。