Hàm struct là gì, làm thế nào để thiết kế một hàm struct, cho ví dụ minh họa?

6,968 views
Skip to first unread message

Ha Cong Hau

unread,
Nov 13, 2012, 8:57:30 AM11/13/12
to ky_thuat_...@googlegroups.com
Đây là hàm dùng trong bài tập lớn mà mình không biết nó là gì rất cần sự giúp đở của các bạn và thầy Bạch Ngọc Dương

duongbn

unread,
Nov 13, 2012, 9:30:31 AM11/13/12
to ky_thuat_...@googlegroups.com
struct không phải là hàm mà là một cấu trúc mà C cho phép người lập trình tự xây dựng ra các kiểu dữ liệu khác ngoài các kiểu có sẵn trong C như int, float, char để phục vụ cho bài toán của mình. Ví dụ: Cần lưu trữ một số nguyên thì khai báo biến kiểu int, cần lưu trữ một số thực thì khai báo biến float,... nhưng cần lưu trữ thông tin của một sinh viên gồm SoIDhọ tên, điểm,... thì khai báo biến kiểu gì? Một biến kiểu gì có thể chứa được tất cả các thông tin trên? Lúc đó, trong chương trình ta tự xây dựng ra một kiểu mới bằng cách sử dụng struct như sau:
typedef struct
{
   char SoID[10];
   char hoten[50];
   float diem;
}sinhvien;
Qua cấu trúc trên, trong chương trình chúng ta ngoài các kiểu int, float, char ta có thêm kiểu sinhvien và có thể khai báo một biến để chứa toàn bộ các thông tin của một sinh viên như sau:
sinhvien sv;     //khai báo biến đặt tên là sv có kiểu sinhvien

Để hiểu rõ hơn về struct, em xem ở chương 9, quyển bài giảng mà lớp đã photo.
Chúc em học tốt!

Vào 20:57:30 UTC+7 Thứ ba, ngày 13 tháng mười một năm 2012, Ha Cong Hau đã viết:

Phan Văn Lâm

unread,
Nov 13, 2012, 9:39:45 AM11/13/12
to ky_thuat_...@googlegroups.com
Vào 20:57:30 UTC+7 Thứ ba, ngày 13 tháng mười một năm 2012, Ha Cong Hau đã viết:
> Đây là hàm dùng trong bài tập lớn mà mình không biết nó là gì rất cần sự giúp đở của các bạn và thầy Bạch Ngọc Dương
>>>>ĐỊnh nghĩa như sau :

Bộ nhớ không được cấp phát khi bạn định nghĩa struct
– Chỉ là “chỗ đặt trước” để biết struct của ta sẽ như thế nào?
Định nghĩa:
struct CDAccountV1 // tên của “kiểu” mới
định nghĩa bằng struct
{
double balance; // tên thành viên
double interestRate;
int term;
}

*• Khi đã định nghĩa struct, bạn có thể khai báo các biến
thuộc kiểu mới này:
CDAccountV1 account;
– Giống như khai báo các kiểu đơn
– Biến account có kiểu CDAccountV1
– Nó chứa các giá trị thành viên
*Lỗi khi dùng struct
Dấu chấm phẩy sau định nghĩa struct
– PHẢI có ; :
struct WeatherData
{
double temperature;
double windVelocity;
}; ( dấu chấm phẩy là BẮT BUỘC)!
– Bắt buộc vì bạn “có thể” khai báo biến struct ở vị trí
này
*Phép gán cho biến struct
Cho trước struct có tên là CropYield
• Khai báo 2 biến struct:
CropYield apples, oranges;
– Cả 2 đều là biến có kiểu CropYield định nghĩa bởi struct
– Phép gán đơn giản sau đây là hợp lệ:
apples = oranges;
• Thực hiện sao chép từng biến thành viên từ oranges vào apples
*struct làm đối số của hàm
• Được truyền vào như các kiểu đơn
– Truyền giá trị
– Truyền tham chiếu
– Hay phối hợp
• Biến struct cũng có thể là giá trị trả về của hàm
– Kiểu trả về là kiểu struct
– Cậu lệnh return trong định nghĩa hàm sẽ gửi biến
struct về nơi gọi hàm
*Khởi tạo struct
Có thể khởi tạo lúc khai báo
– Ví dụ:
struct Date
{
int month;
int day;
int year;
};
Date dueDate = {12, 31, 2003};
– Lệnh khai báo này cung cấp dữ liệu ban đầu cho cả 3 biến thành
viên


***Khai báo và khởi tạo cấu trúc
Kiểu cấu trúc
struct <tên kiểu>
{
các thành phần;
} [<danh sách biến>];
z Mỗi thành phần (một trường) là một khai báo biến
z Phần <danh sách biến> có thể có hoặc không

Khai báo biến cấu trúc:
<tên cấu trúc> <danh sách biến>;
Ví dụ:
struct vector {
double x, y, z;
};
vector v3, *v4; // Khai báo vector trong C++
>>>>>ví dụ cụ thể như sau: chương trình khai báo tên tuổi?
#include<iostream.h>

struct person{
private:
char name[20];
int age;
public:
void nhap(){
cout<<"nhap ho va ten:";
cin.getline(name,20);
cout<<"nhap tuoi";
cin>>age;
}
void show(){
cout<<name<<" tuoi "<<age;
}
};
int main(){
person a;
a.nhap();
a.show();
return 0;
}

ĐÓ là những gì mà mình nghiên cứu được về trucst? còn thiếu xót gì thì có thể hỏi thầy Dương ? muốn biết chi tiết hơn thì bạn tải tập tin này về nha :
lect06_struct_class.pdf

duongbn

unread,
Nov 17, 2012, 11:18:40 PM11/17/12
to ky_thuat_...@googlegroups.com
Em Phan Văn Lâm không nên chép bài của người khác để thành câu trả lời của mình! Em chép nhưng chẳng biết nó là gì?
Ngôn ngữ trong trả lời của em là C++ chứ không phải C chuẩn.
Chúng ta đang lập trình bằng ngôn ngữ C trên nền Visual C++.Net chứ không phải học ngôn ngữ C++.

Vào 20:57:30 UTC+7 Thứ ba, ngày 13 tháng mười một năm 2012, Ha Cong Hau đã viết:
Đây là hàm dùng trong bài tập lớn mà mình không biết nó là gì rất cần sự giúp đở của các bạn và thầy Bạch Ngọc Dương
Reply all
Reply to author
Forward
0 new messages