1 00:00:07,185 --> 00:00:09,540 [Powered by Google Translate] CHRIS GERBER: Một chức năng là một loạt các bước trong một 2 00:00:09,540 --> 00:00:12,000 chương trình lớn hơn, mà thường được dự định được gọi 3 00:00:12,000 --> 00:00:14,440 nhiều lần và từ nhiều nơi khác trong 4 00:00:14,440 --> 00:00:15,720 chương trình. 5 00:00:15,720 --> 00:00:18,480 Khi tạo ra một chức năng C, một trong những yêu cầu là 6 00:00:18,480 --> 00:00:21,050 chỉ định một loại giá trị trả về. 7 00:00:21,050 --> 00:00:23,490 Các trường hợp đơn giản nhất là một tình huống mà gọi 8 00:00:23,490 --> 00:00:26,510 mã không có liên quan với kết quả của hàm. 9 00:00:26,510 --> 00:00:28,530 Đây có thể là trường hợp khi chúng tôi đang in dữ liệu vào 10 00:00:28,530 --> 00:00:31,120 người sử dụng màn hình hiển thị, như với printf. 11 00:00:31,120 --> 00:00:33,140 Trong trường hợp này, chúng ta có thể khai báo một giá trị trả về 12 00:00:33,140 --> 00:00:35,020 có kiểu void. 13 00:00:35,020 --> 00:00:37,130 Sử dụng khoảng trống chỉ đơn giản là cho trình biên dịch rằng không có 14 00:00:37,130 --> 00:00:39,120 giá trị sẽ được trả lại. 15 00:00:39,120 --> 00:00:40,530 Hãy xem này trông giống như. 16 00:00:40,530 --> 00:00:42,940 >> Hãy nói rằng chúng ta có một chức năng gọi là say_hello rằng 17 00:00:42,940 --> 00:00:44,490 mất một đối số. 18 00:00:44,490 --> 00:00:47,050 Chúng tôi sẽ vượt qua nó tên của một người và nó sẽ hiển thị một lời chào 19 00:00:47,050 --> 00:00:48,380 trên màn hình. 20 00:00:48,380 --> 00:00:50,505 Tên sẽ được char *. 21 00:00:50,505 --> 00:00:53,080 Và chúng tôi sẽ xác định đó là đối số. 22 00:00:53,080 --> 00:00:55,970 Ứng dụng của tôi không cần phải biết những gì đã được in hoặc nếu nó 23 00:00:55,970 --> 00:00:56,970 đã được in. 24 00:00:56,970 --> 00:00:59,680 Vì vậy, giá trị trả về sẽ có kiểu void. 25 00:00:59,680 --> 00:01:02,060 Chức năng này có thể in ra màn hình với một lệnh như 26 00:01:02,060 --> 00:01:07,620 printf ("Xin chào,% s \ n 27 00:01:07,620 --> 00:01:12,100 ", Tên); 28 00:01:12,100 --> 00:01:14,690 Lời chào sẽ được hiển thị và điều khiển sẽ được thông qua 29 00:01:14,690 --> 00:01:16,260 sao để mã gọi. 30 00:01:16,260 --> 00:01:19,370 Một điều cần lưu ý là khi các loại giá trị trả lại là void, 31 00:01:19,370 --> 00:01:20,790 bạn không cần phải bao gồm sự trở lại 32 00:01:20,790 --> 00:01:22,300 tuyên bố trong chức năng. 33 00:01:22,300 --> 00:01:25,270 Nếu bạn chọn để bao gồm một, không bao gồm giá trị trả về 34 00:01:25,270 --> 00:01:27,420 như là một đối số. 35 00:01:27,420 --> 00:01:29,380 >> Trong một số trường hợp, nó làm cho tinh thần để trả về một 36 00:01:29,380 --> 00:01:30,570 giá trị từ một hàm. 37 00:01:30,570 --> 00:01:33,900 Hãy nói rằng chúng tôi đã viết một chức năng được gọi là add_floats. 38 00:01:33,900 --> 00:01:36,160 Chúng tôi sẽ vượt qua hai đối số, cả hai nổi, 39 00:01:36,160 --> 00:01:37,510 được gọi là đầu tiên và thứ hai. 40 00:01:37,510 --> 00:01:40,520 Và nó sẽ cho chúng tôi biết số tiền của những người nổi. 41 00:01:40,520 --> 00:01:43,000 Chúng tôi biết rằng nếu chúng ta thêm hai phao lại với nhau, kết quả 42 00:01:43,000 --> 00:01:44,120 sẽ là một float. 43 00:01:44,120 --> 00:01:47,540 Cho rằng, chúng tôi chọn một kiểu trả về của phao. 44 00:01:47,540 --> 00:01:50,040 Chức năng này sẽ thực hiện tính toán này và trở về 45 00:01:50,040 --> 00:01:52,260 các giá trị trong một tuyên bố như trở lại 46 00:01:52,260 --> 00:01:54,770 + đầu tiên thứ hai; 47 00:01:54,770 --> 00:01:57,300 Khi kiểm soát được thông qua trở lại mã gọi, 48 00:01:57,300 --> 00:02:00,030 kết quả giá trị bây giờ đã có mã đó. 49 00:02:00,030 --> 00:02:04,250 Chúng ta có thể lưu trữ giá trị như vậy: kết quả float = 50 00:02:04,250 --> 00:02:09,410 add_floats (3,14, 1,62 51 00:02:09,410 --> 00:02:11,290 ); 52 00:02:11,290 --> 00:02:15,200 Kết quả trong trường hợp này sẽ chứa giá trị 4,76. 53 00:02:15,200 --> 00:02:18,620 >> Xin nhắc lại, các giá trị dấu chấm động là không chính xác. 54 00:02:18,620 --> 00:02:21,250 Vì vậy, nếu đây là một tính toán tài chính, sử dụng tiền và 55 00:02:21,250 --> 00:02:24,960 cent, chúng tôi có thể muốn xem xét một kiểu dữ liệu chính xác như 56 00:02:24,960 --> 00:02:29,120 int và thực hiện các tính toán trong đồng xu. 57 00:02:29,120 --> 00:02:31,270 >> Một trường hợp khác mà chúng ta muốn trả về một giá trị từ một 58 00:02:31,270 --> 00:02:33,980 chức năng là khi chúng tôi muốn biết nếu một chức năng 59 00:02:33,980 --> 00:02:35,960 thành công. 60 00:02:35,960 --> 00:02:39,190 Nếu nó đã không thành công, chúng tôi cũng có thể muốn biết những gì loại 61 00:02:39,190 --> 00:02:41,250 lỗi xảy ra. 62 00:02:41,250 --> 00:02:43,647 Hãy nói rằng chúng tôi đang cố gắng để mở một tập tin trên đĩa để đếm 63 00:02:43,647 --> 00:02:45,220 số ký tự trong nó. 64 00:02:45,220 --> 00:02:48,635 Nếu tập tin không thể mở được, chúng tôi muốn để có thể dừng lại và 65 00:02:48,635 --> 00:02:50,910 nói cho người dùng về vấn đề này. 66 00:02:50,910 --> 00:02:54,070 >> Chúng tôi sẽ gọi count_file_chars chức năng của chúng tôi và nó sẽ 67 00:02:54,070 --> 00:02:55,490 mất một đối số. 68 00:02:55,490 --> 00:02:57,420 Chúng tôi sẽ vượt qua trong tên của tập tin bằng cách sử dụng một 69 00:02:57,420 --> 00:02:59,610 char * gọi là tên tập tin. 70 00:02:59,610 --> 00:03:03,050 Chức năng này có thể trông giống như thế này. 71 00:03:03,050 --> 00:03:05,450 Trong ví dụ này, chúng tôi mong chờ các tính trở lại 72 00:03:05,450 --> 00:03:07,130 0 hoặc nhiều. 73 00:03:07,130 --> 00:03:08,870 Điều này để lại cho chúng ta các số nguyên âm 74 00:03:08,870 --> 00:03:10,200 sử dụng như là giá trị trọng điểm. 75 00:03:10,200 --> 00:03:13,320 Một giá trị trọng điểm chỉ đơn giản là một giá trị đặc biệt mà không phải là 76 00:03:13,320 --> 00:03:16,200 dữ liệu hợp lệ nhưng không chuyển tải thông tin. 77 00:03:16,200 --> 00:03:19,480 Ở đây, nếu tôi trở lại một -1 mã gọi, tôi 78 00:03:19,480 --> 00:03:21,830 thực sự gửi một thông điệp rằng một lỗi xảy ra trong khi 79 00:03:21,830 --> 00:03:23,810 cố gắng để truy cập các tập tin. 80 00:03:23,810 --> 00:03:26,060 Sau đó tôi có thể kiểm tra xem giá trị trả về để xác định nếu của tôi 81 00:03:26,060 --> 00:03:28,060 chức năng gọi là thành công. 82 00:03:28,060 --> 00:03:30,350 Nếu con số này là 0 hoặc cao hơn, tôi sẽ biết 83 00:03:30,350 --> 00:03:32,180 số ký tự trong tập tin. 84 00:03:32,180 --> 00:03:35,310 Tuy nhiên, nếu con số này là nhỏ hơn 0, tôi có thể chỉ đơn giản là 85 00:03:35,310 --> 00:03:37,350 in rằng một vấn đề đã xảy ra. 86 00:03:37,350 --> 00:03:40,120 Thương mại-off để xem xét là bằng cách đặt tất cả các 87 00:03:40,120 --> 00:03:43,180 các giá trị tiêu cực như là giá trị trọng điểm, giả định này là một 88 00:03:43,180 --> 00:03:46,070 Số nguyên 32-bit, tôi đã cơ bản lấy đi xung quanh 89 00:03:46,070 --> 00:03:48,970 2 tỷ có thể trở về giá trị. 90 00:03:48,970 --> 00:03:51,270 >> Quay lại các loại giá trị là một trong những yếu tố quan trọng nhất của 91 00:03:51,270 --> 00:03:52,460 chức năng cuộc gọi. 92 00:03:52,460 --> 00:03:54,670 Hy vọng rằng điều này tóm tắt ngắn gọn đã giúp bạn suy nghĩ về 93 00:03:54,670 --> 00:03:59,110 ba loại: void, giá trị kết quả, và các giá trị trọng điểm, 94 00:03:59,110 --> 00:04:00,190 và khi mỗi một trong ba có thể là 95 00:04:00,190 --> 00:04:02,010 thích hợp trong mã của bạn. 96 00:04:02,010 --> 00:04:03,260 Cảm ơn bạn đã cho xem.