内存布局
是的,数组中的元素在内存中是连续的,是的,
st
在你的代码中有一个指向第一个的指针
Student
动态分配数组中的结构。
除非结构是const,否则可以使用
std::cin
将信息读入该数组元素的各个字段。
std::string
请注意,char数组数据包含在
std::string
并且因此不是阵列存储器的连续部分。
std::vector
正如评论中所指出的,最佳做法是使用
std::vector
表示在编译时大小未知的数组,因为这会为您处理内存分配和取消分配。你可能也想
avoid
using namespace std;
并使用a
range-based for-loop
.
大致如下。
#include <iostream>
#include <string>
#include <vector>
struct Student
{
int studentNumber;
std::string studentName;
double studentMark;
};
int main() {
int n;
std::cout << "How many elements will the array have?";
std::cin >> n;
std::cin.ignore();
std::vector<Student> st(n);
for (auto &student : st) {
std::cout << i + 1 << ". students number:";
std::cin >> student.studentNumber;
std::cin.ignore();
std::cout << i + 1 << ". students name:";
std::getline(cin, student.studentName);
std::cout << i + 1 << ". students mark:";
std::cin >> student.studentMark;
std::cout << &student << std::endl;
std::cout << &(student.studentNumber) << std::endl;
}
}