PDA

View Full Version : Thac mac ve mang trong C++



g_dragon
23-08-2002, 07:50
Chao cac cao thu trong lang lap trinh , tui dang hoc C++ va cos 1 kho khan chac khong phai la kho doi voi cac ban, tui khong the phan biet duoc su khac nhau giua cac khai bao mang sau:
char Array1[9]
char *Array2[9]
char *Array3=new char
char *Array4=new char[9]
Vay mong cac ban bo chut thoi gio giup do Cam on truoc

nbthanh
23-08-2002, 13:14
char Array1[9]
Khai báo 1 mảng 9 phần tử là kiểu char

char *Array2[9]
Khai báo 1 mảng 9 phần tử là kiểu char*

char *Array3=new char
Khai báo + cấp phát bộ nhớ cho 1 biến kiểu char*

char *Array4=new char[9]
Khai báo + cấp phát bộ nhớ cho 1 array có 9 phần tử là kiểu char :D

dragon43
24-08-2002, 22:11
Ban nbthanh noi thi dung roi
Minh chi xin noi ro hon them mot chut
char Array1[9]
Kb mang 9 ptu kieu char
char *array2[9]
kb mang 9 con tro kieu char(chua tro vao dau)
char *array3=new char
Kb mot con tro kieu char (da tro vao mot bien char nao do)
char *array4=new char[9]
kb mot con tro kieu char tro vao dia chi phan tu [0] cua vung nho 9 phan tu kieu char lien tiep

billnet
05-09-2002, 16:53
char Array1[9]
Khai báo 1 mảng 9 phần tử là kiểu char

char *Array2[9]
Khai báo 1 mảng 9 phần tử là kiểu char*.....

char *Array3=new char
Khai báo + cấp phát bộ nhớ cho 1 biến kiểu char* và dùng con trỏ Array3 de quan li vùng nhớ vừa cấp phát.

char *Array4=new char[9]
Khai báo + cấp phát bộ nhớ cho 1 array có 9 phần tử là kiểu char
và dùng con trỏ Array4 của bạn để chỉ đến đầu Mảng vùa cấp phát
lol

hautuoc
26-09-2004, 07:42
/*đây là đoạn code của hàm sắp xếp quicksort, dùng theo kiểu file, mình chỉ có thể làm theo kiểu mảng tĩnh, bác nào có thể chuyển nó sang mảng động giúp mình không ? Vì nếu dùng mảng tĩnh thì rất bất tiện trong việc cấp phát vùng nhớ cho CT */


void hv(sv&n,sv&m)
{
sv tam;
tam=n;
n=m;
m=tam;
}
//-------------
void partition(ds&X,int l,int r)
{
FILE*f;
f=fopen(fname,"wb");

int i,j;
i=l; j=r;
sv x; x=X.e[(l+r)/2];
if(l>=r) return;
else do
{
while(strcmp(X.e[i].ten,x.ten)<0) i++;
while(strcmp(X.e[j].ten,x.ten)>0) j--;
if(i<=j)
{
hv(X.e[i],X.e[j]);
i++; j--;
}
}while(i<=j);
partition(X,l,j);
partition(X,i,r);
fclose(f);
}
//--------
void quicksort(ds&X)
{
FILE*f;
f=fopen(fname,"wb");
partition(X,0,X.n-1);
fclose(f);

}
//----------

//Bình thường mình phải #define rất bất tiện


/* #define max 100
struct sv
{
char ten[25];
char ms[8];
int ns;
float dtb;
};
//-------
struct ds
{
int n;
sv e[max];
};
//-----

// Với các hàm con như sau:

char *fname="dssv.dat";
void nhap1sv(sv&X)
{
cout<<"ho va ten :"; gets(X.ten);
cout<<"ma so sinh vien:"; gets(X.ms);
cout<<"nam sinh :"; cin>>X.ns;
cout<<"diem trung binh:"; cin>>X.dtb;
}
//------
void xuat1sv(sv X)
{
cout<<"\nho va ten :"<<X.ten;
cout<<"\nma so sinh vien :"<<X.ms;
cout<<"\nnam sinh :"<<X.ns;
cout<<"\ndiem trung binh :"<<X.dtb;
}
//-------
void nhapds(ds&X)
{
FILE*f;
f=fopen(fname,"wb");
cout<<"nhap so luong sv:"; cin>>X.n;
for(int i=0;i<X.n;i++)
{
cout<<"\n\n\t*************";
cout<<"\n\t*sinh vien "<<i+1<<"*";
cout<<"\n\t*************\n\n";
nhap1sv(X.e[i]);
fwrite(&X.e[i],sizeof(X.e[i]),X.n-1,f);
}
fclose(f);
}
//--------
void xuatds(ds&X)
{
FILE*f;
f=fopen(fname,"rb");
for(int i=0;i<X.n;i++)
{
cout<<"\n\n\t*************";
cout<<"\n\t*sinh vien "<<i+1<<"*";
cout<<"\n\t*************\n";
fread(&X.e[i],sizeof(X.e[i]),X.n-1,f);
xuat1sv(X.e[i]);
}
fclose(f);
}
//--------

hautuoc
26-09-2004, 07:44
uh, thật là bực mình, muốn post bài lên mà sao hổng được gì hết trơn vậy nè

hautuoc
26-09-2004, 07:54
các pác đi đâu hết trơn rùi, seo chỉ có mình tui cô đơn ở đây vậy ?

InstCode
27-09-2004, 15:55
Hic, thì vấn đề đã giải quyết gồi, có gì còn bối rối nữa ???

mo dung phuc
04-10-2004, 17:44
chuyen sang dong thi ong xem cho nao can them phan tu thi NEW cho no 1 cai va tong vao danh sach hay gi do de quan ly, khi nao xong thi ong DELETE di
cung lam thi cu NEW dau doan code va DELETE sau khi dung xong -> chac an( neu biet truoc kich thuoc)