Chủ đề: 2 câu hỏi về hàm trong C
-
08-09-2008, 06:34 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
2 câu hỏi về hàm trong C
Mình đang chập chững học lại C, mong các bạn giúp đỡ 2 câu hỏi [IMG]images/smilies/biggrin.png[/IMG]
1/ Khi viết (define) 1 hàm, làm sao mình có thể xác định được nên define hàm đó là hàm trả trị (các kiểu int ...) hay là hàm ko trả trị (void) ? Nói tóm tắt là khi nào thì sử dụng kiểu void cho hàm và khi nào thì sử dụng các kiểu bình thương (như int ...) cho hàm ?
2/ Mình đọc trong 1 cuốn sách C có example sau :
Mã:#include <stdio.h> struct vietwow { int viet; int wow; }; void ham(struct vietwow *test) /* su dung struct point la`m parameter cua 1 ha`m la` o day */ { test->viet = 10; test->wow = 20; } int main(void) { struct vietwow haha; ham(&haha); printf("gia tri viet : %d ", haha.viet); printf("gia tri wow : %d ", haha.wow); return 0; }
"Another thing to notice here: if we passed the stuct instead of a pointer to the struct, what would happen in the function build_beejs_frog() when we changed the values? That's right: they'd only be changed in the local copy, and not back at out in main(). So, in short, pointers to structs are the way to go when it comes to passing structs to functions."
Vậy mình có thắc mắc là nếu ta đổi kiểu của function ham thành kiểu trả trị (thay vì hiện tại là void - ko trả trị) thì ctrình có work ko ?
Thân,View more random threads:
- Thắc mắc về khai báo chuỗi trong C
- Mảng xâu kí tự
- khởi tạo mảng
- Giúp đỡ bài tập về mảng 1 chiều
- bạn nào giải code hộ minh vs :/
- a/c nào giúp e làm bài này với ạ
- Giải thuật chèn vào danh sach liên kết đơn của số nguyên
- Bài toán tam giác - BÀI KIỂM TRA ĐẦU TIÊN ! lần đầu lập trình!!!!!
- Mua được nhiều nhất mà số tiền thừa là ít nhất, giúp mình giải bài toán này?
- Lỗi openGL
-
08-09-2008, 06:53 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Hoàn toàn được. Bạn có thể viết lại như sau
Mã:vietwow ham(struct vietwow test) { test.viet = 10; test.wow = 20; return test;} int main(void){ struct vietwow haha; haha= ham(haha); printf("gia tri viet : %d ", haha.viet); printf("gia tri wow : %d ", haha.wow); return 0; }
-
09-09-2008, 08:11 AM #3Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mã:int ham(struct vietwow *test) { test->viet = 10; test->wow = 20; return test; }
-
09-09-2008, 08:21 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi vietwow
-
09-09-2008, 08:23 AM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi meoconlongvang
Mã:struct vietwow ham(struct vietwow test) { test.viet = 10; test.wow = 20; return test; }
-
09-09-2008, 08:39 AM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
bạn thử đoạn code này xem:
Mã nguồn PHP:#include <stdio.h>struct vietwow {int viet;int wow;};struct vietwow ham(struct vietwow *test){ test->viet = 10; test->wow = 20; return *test;}int main(void){ struct vietwow haha; ham(&haha); printf("gia tri viet : %d
", haha.viet); printf("gia tri wow : %d
", haha.wow); return 0;}
-
09-09-2008, 02:55 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
zkday2686 sửa vậy ổn rồi, mình muốn quay về vấn đề đầu tiên
Nói tóm tắt là khi nào thì sử dụng kiểu void cho hàm và khi nào thì sử dụng các kiểu bình thương (như int ...) cho hàm ?
- Khi nào sử dụng cái gì thì theo mục đích bạn muốn sử dụng, nếu bạn muốn hàm đó trả về giá trị gì thì đặt kiểu trả về cho hàm đó. VD: Thường những hàm nhập xuất không trả về giá trị để void, các hàm tình giá trị thì trả về kiểu tương ứng.
* Tóm lại, bạn cần hiểu rõ và tuỳ dùng, có thể dùng lình tinh mà không báo lỗi, tuy nhiên nên dùng đúng.
-
09-09-2008, 03:20 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi vietwow
-
09-09-2008, 05:10 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi vietwow
-
09-09-2008, 07:03 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Ah, mình hiểu rồi, cám ơn tất cả các bạn đã giúp đỡ [IMG]images/smilies/smile.png[/IMG]
Thanx again
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...