PDA

View Full Version : Đơn giản mà không biết!



thanhhien8
24-04-2009, 17:09
// Ở chỗ public dòng char
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<string.h>
class sinhvien
{
public:
char *ms;
char ten[30]; /* Nếu em khai báo thành con trỏ thì chương trình bị lỗi, còn nếu 1 trong hai là con trỏ và 1 mảng thì chạy vẫn đúng. Nếu mình khai báo con trỏ thì phải cấp phát bộ nhớ cho nó thì phải?(em không rành), ai chỉ em lại cách khai báo cả 2 cái đó thành con trỏ, cấp phát bộ nhớ và giải phóng dùm em. Thanks mọi người rất rất nhiều nhiều :) */
float diem1,diem2,diem3,diemtb;
void nhap();
void xuat();
};
void sinhvien::nhap()
{
cout<<"Nhap mssv: ";
gets(ms);
cout<<"Ten: ";
gets(ten);
}
void sinhvien::xuat()
{
cout<<""<<ms;
cout<<" "<<ten;
}
void main()
{
clrscr();
sinhvien sv;
sv.nhap();
sv.xuat();
getch();
}

binprolab
25-04-2009, 15:11
nếu bạn khai báo char* thì lỗi của bạn là khởi tạo biến con trỏ nhưng chưa cấp phát bộ nhớ cho con trỏ. ví dụ char *s thì khi sử dụng bạn phải cấp phát bộ nhớ cho nó như sau: s = new char[100].

[=========> Bổ sung bài viết <=========]

khi giải phóng bộ nhớ bạn sử dụng lệnh delete. Ví dụ để giải phóng bộ nhớ cho xâu kí tự s ở trên ta viết như sau: delete [] s; chú ý: nếu không có [] thì bạn chỉ delete được s[0] mà thôi.