#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; class Sample { static int x; int y; char name[20]; public: Sample(int b, char* n) { y = b; strcpy(name, n); } }; int Sample::x = 0; int main() { Sample s1(10, "wang"), s2(20, "li"); cout << sizeof(s1) << sizeof(s2) << endl; return 0; }为什么在vs2022运行不了
时间: 2024-01-02 15:03:01 浏览: 65
使用include <iostream>时一定要加using namespace std
这段代码在 VS2022 中无法编译运行的原因可能是因为缺少头文件 `string.h` 或者 `cstring`,因为在代码中使用了 `strcpy` 函数,这个函数在这两个头文件中都有定义。你可以尝试添加以下代码:
```c++
#include <cstring>
```
另外,你的代码中存在一个问题,类成员变量 `name` 的长度为 20,但是没有考虑到字符串的结尾符号 '\0',因此在使用 `strcpy` 复制字符串时需要注意,否则可能会出现缓冲区溢出的问题。建议将 `name` 的长度设置为 21,这样就可以同时存储 20 个字符和一个结尾符号 '\0'。
阅读全文