我无法解释以下行为的原因。我初始化了两段文本,一段为 char*,另一段为 char[] 并将它们放入一个结构中。两者在结构中看起来都很好,但在 main 中,第二个丢失了,第一个给我一个我理解的编译器警告(不推荐从字符串常量到 char* 的转换)。
这是我在这里提出的第一个问题,对于任何做错的事情,我深表歉意。是的,我尝试搜索,但与 char* 和 char[] 相关,出现了很多问答,我没有发现类似于我遇到的嵌套问题。
从附加的代码中,我得到输出:
get_struct: 5 test test2
main: 5 test
(最后的 test2 不见了)
所以代码:
#include <iostream>
typedef struct {
double a_double;
char* a_char1;
char* a_char2;
} testStruct;
testStruct make_struct(double d, char* c1, char* c2) {
testStruct t;
t.a_double = d;
t.a_char1 = c1;
t.a_char2 = c2;
return t;
}
void get_struct(testStruct &t) {
char* test_char1 = "test";
char test_char2[] = "test2";
double test_double = 5;
t = make_struct(test_double, test_char1, test_char2);
std::cout << "get_struct: " << t.a_double << " "
<< t.a_char1 << " " << t.a_char2 << std::endl;
}
int main() {
testStruct t;
get_struct(t);
std::cout << "main: " << t.a_double << " "
<< t.a_char1 << " " << t.a_char2 << std::endl;
return 0;
}