您好,我遇到了一些我真的不明白 C 中结构的原理。我的一个结构包含 2 个字符串(名为“seq”和“foldedSeq”)。这两个字符串(应该)具有相同的尺寸。但是,当我尝试修改一个时,第二个会自动在字符串的同一指定位置进行相同的修改。
这是有趣的代码块:
typedef struct MD {
int nb_line;
int nb_colomn;
EM ** matrix;
char * seq; // Initial sequence.
char * foldedSeq;
} MD;
void set_sequences(MD * M, char * seq) {
M->seq = seq;
M->foldedSeq = M->seq; //Purpose: give to foldedSeq the seq dimensions (perhaps it is useless).
printf("seq= %s\tstrlen= %d\nM->seq= %s\nM->foldedSeq= %s\n", seq, strlen(seq), M->seq, M->foldedSeq);
// Up to this point 'seq' = 'foldedSeq'
int i;
for( i = 0; i < strlen(seq); i++) {
M->foldedSeq[i] = '-'; // Original purpose: make 'foldedSeq' string filled with hyphens only.
}
printf("seq= %s\tstrlen= %d\nM->seq= %s\nM->foldedSeq= %s\n", seq, strlen(seq), M->seq, M->foldedSeq);
// Here is the problem: the string 'seq' REALLY IS modified alongside with 'foldedSeq'... WHY? :(
}
既然我写了“M->foldedSeq[i]”应该修改,为什么“M->seq[i]”也要修改??
感谢您阅读并为我提供解释,我的逻辑在这里找到了死胡同。