**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
22小时前关闭
Improve this question
我试图返回一个列表,并将列表设置为SCR_StrPack()
,但它给了我两个错误
#include <iostream>
#include <windows.h>
using namespace std;
int SCR_X = 40;
int SCR_Y = 110;
struct block {
char DISPLAY = ' ';
int TYPE = 0;
float DESTRUCTION = 1.0f;
};
void SCR_Gen(block blck[]) {
for(int i=0; i<sizeof(blck); i++) {
cout << blck[i].DISPLAY;
}
}
block SCR_StrPack(const char STR[]) {
block blocks[] = {};
for(int i=0; i<sizeof(STR); i++) {
blocks[i].DISPLAY = STR[i];
}
return blocks;
}
int main() {
block tr[20] = {};
tr = SCR_StrPack("\"\"aaa\"\"");
SCR_Gen(tr);
return 0;
}
我在考虑使用for循环,但它是一次性的,我不想每次都重新输入它,只是为了大量修改列表中的某些内容。
1条答案
按热度按时间ldioqlga1#
你不能返回数组,也不能使用
sizeof(STR)
来获取字符串的长度。当传递给函数时,字符串会衰减为指向第一个元素的指针,因此sizeof(STR)
将始终是该指针的大小。你可以使用一个
std::vector<block>
来存储你的block
,你也可以使用一个std::string_view
来获取字符串的大小。示例:
你也可以使用基于范围的
for
-循环。例如: