01/10/2018, 12:34

Giúp đỡ mảng động các cấu trúc C++

e viết hàm display() để xuất ra “stu” thứ “length -1” nhưng khi chạy lại bị lỗi “has stop working…”, các bác xem giúp e ạ cảm ơn nhiều

#include <iostream>
#include <cstring>
#include <conio.h>
using namespace std;
typedef struct 
{
	int ID;
	char name[50];
} sinhvien;
void setArr(sinhvien *stu, int length)
{
	stu = new sinhvien[length];
	for (int i = 0; i < length; i++)
	{
		cout << "=================" << endl;
		cout << "Sinh vien thu " << i << endl;
		cout << "Ten sinh vien: "; 
		cin >> stu[i].name;
		cout << "So bao danh: ";
		cin >> stu[i].ID;
	}
	return;
}
sinhvien max(sinhvien *stu, int length)
{
	sinhvien result = stu[length - 1];
	return result;
}
void display(sinhvien stu)
{
	cout << "ten sinh vien: " << stu.name << endl;
	cout << "so bao danh: " << stu.ID << endl;
	return;
}
int main()
{
	sinhvien *newstu =NULL, tmpstu;
	int length = 0;
	cout << "Nhap vao so sinh vien: ";
	cin >> length;
	setArr(newstu, length);
	tmpstu = max(newstu, length);
	display(tmpstu);
	system("pause");
	return 0;
}
Quang Minh viết 14:41 ngày 01/10/2018

Bạn cấp phát bộ nhớ cho *newstu trong hàm main luôn nhé. và bỏ dòng cấp phát trong hàm setArr đi.

    sinhvien *newstu = NULL, tmpstu;
	int length = 0;
	cout << "Nhap vao so sinh vien: ";
	cin >> length;
	newstu = new sinhvien[length];
Bài liên quan
0