Xin chào và chào mừng trở lại.
Trong bài giảng này, tôi muốn để nói về một số chủ đề khác
mà bạn có thể nghiên cứu.
Về cơ bản chúng tôi đang kết thúc lớp học.
Chúng tôi đang kết thúc nó.
Và vì vậy chúng tôi đã không nhận được để trang trải mọi thứ.
Rõ ràng, đó là một lớp học dành cho người mới bắt đầu.
Vì vậy, có rất nhiều nâng cao các chủ đề mà bạn có thể nghiên
cứu thêm để c thực sự, thực sự trở thành tuyệt vời trong lập trình c, và tôi chỉ muốn đề
cập đến một vài trong số đó.
Vì vậy, trước tiên, chúng tôi đã không vào typedefs.
Tôi đã muốn có đã nói về điều đó, nhưng nó là
một khái niệm nâng cao hơn.
Chúng tôi đã nói về enums.
Và enum là một cách tạo kiểu của riêng bạn.
Nhưng cụ thể trong c, có một từ khóa được gọi là typedef và bạn có thể tạo các
kiểu dữ liệu của riêng mình.
Điều này rất hữu ích, hơn thế nữa của một khái niệm nâng cao.
Bạn chắc chắn có thể tìm hiểu thêm về điều đó.
Có nhiều thông tin hơn về bộ tiền xử lý mà bạn có
thể tìm hiểu, cụ thể là nối chuỗi.
Bộ xử lý trước ghi nhớ chạy trước trình biên dịch.
Chúng tôi đã tìm hiểu về câu lệnh xác định.
Chúng tôi đã học về một vài điều khác ở đây và ở đó, nhưng bộ
xử lý trước có thể là một phần hoàn toàn khác với nhiều thông tin hơn về nó.
Về cơ bản, bạn có thể sử dụng nó để tối ưu hóa nhiều mã của bạn để bạn
có thể chạy trước.
Bạn có thể làm các chức năng nội tuyến chạy trong bộ tiền xử lý, tất cả
đều có nhiều khái niệm hay ho.
Còn rất nhiều thứ nữa về những ngôi sao hư không.
Những ngôi sao hư không, hãy nhớ, rất nhiều tính linh hoạt.
Đặc biệt, malloc hàm trả về một dấu sao trống.
Chúng tôi có thể tạo ra các hàm mất giá trị con trỏ và chuyển các con trỏ void xung
quanh để làm cho nó linh hoạt hơn.
Còn rất nhiều nữa chúng ta có thể nghiên cứu về điều đó.
Thư viện tĩnh và các đối tượng được chia sẻ.
Chúng tôi đã không nói về điều này khái niệm về một thư viện.
Chúng tôi sử dụng thư viện khi chúng tôi liên kết.
Cụ thể, rất nhiều thư viện được
định nghĩa trong thư viện tiêu chuẩn c.
Nhưng bạn có thể tạo thư viện của riêng mình.
Chúng tôi đã tạo ra các chương trình.
Chương trình là quá trình chạy trong bộ nhớ.
Nhưng thư viện thực sự là mã khác mà bạn có thể sử dụng lại trong các chương trình khác.
Vì vậy, ví dụ, thư viện tiêu chuẩn c.
Nếu bạn đã lập trình trong ngôn ngữ, thông thường, chúng là các API đi
kèm với ngôn ngữ.
Có hai loại thư viện mà bạn có thể tạo.
Bạn có thể tạo một tĩnh thư viện nơi bạn biên dịch tất
cả mã đó khi bạn liên kết.
Và sau đó, bạn cũng có thể tạo đối tượng mà trong quá trình thực thi
chương trình, bạn sẽ tra cứu các chức năng và gọi chúng.
Vì vậy, các thư viện tĩnh thường được kết thúc trong dấu chấm a và chúng
được biên dịch tại thời điểm tĩnh hoặc chúng được biên dịch khi bạn biên dịch chương trình.
Các đối tượng được chia sẻ là dấu chấm để tệp hoặc chúng cũng bạn có thể nghĩ chúng
như những con dlls nếu bạn đã từng nghe nói về thư viện
liên kết động và visual c plus plus.
Nhưng các đối tượng được chia sẻ không phải là thời gian biên dịch.
Một lần nữa, đó là một cách để sử dụng lại mã.
Chúng tôi có thể nghiên cứu những khái niệm này và tôi có thể chỉ cho bạn cách xây dựng thư viện
tĩnh cũng như các đối tượng được chia sẻ.
Macro.
Chúng tôi đã không có cơ hội để nói về một macro.
Đây là một chủ đề nâng cao.
Điều này được chạy bởi bộ xử lý trước để chủ yếu làm thay
thế, thay thế chuỗi.
Một số chức năng mà chúng tôi đã nghiên cứu thực sự được
viết dưới dạng macro, giống như macro khẳng định.
Các macro có thể được khám phá chi tiết hơn nhiều.
Các đoàn thể.
Các công đoàn thường sẽ đi cùng với cấu trúc.
Đó là một cách để có nhiều các loại dữ liệu được trả về hoặc các loại phần tử thành
viên khác nhau bên trong một cấu trúc đại diện cho cùng một thứ.
Vì vậy, bạn có thể có một cấu trúc có một thành viên, nhưng thành viên đó có
thể là một float và bạn sẽ sử dụng công đoàn để làm điều đó.
Các chủ đề khác con trỏ chức năng.
Chúng tôi đã nói về tính cách chủ yếu là con trỏ, và thậm chí cả con trỏ
số nguyên và con trỏ kép.
Nhưng bạn thực sự có thể có con trỏ chỉ ra các chức năng khác nhau.
Vì vậy, khi chương trình của bạn đang chạy, bạn có thể thực thi một chức năng.
Và lần sau khi nó chạy, nó có thể thực thi một chức năng khác
dựa trên đầu vào của người dùng hay đại loại thế.
Con trỏ hàm là một chủ đề hoàn toàn khác.
Con trỏ nâng cao.
Còn rất nhiều thứ khác nữa cho con trỏ hơn những gì chúng ta đã thảo luận.
Chúng tôi đã thảo luận những điều cơ bản về nhưng chúng ta có thể nói
về con trỏ chi tiết hơn nhiều.
Có những con trỏ thực tế đến con trỏ, vì vậy có các gợi ý kép và đó là
một chủ đề hàng đầu nâng cao hơn.
Đối số biến cho các hàm.
Chúng được đề cập đến như các hàm biến đổi.
Chúng tôi sử dụng hàm printf có một số đối số
thay đổi, nhưng chúng tôi không xác định bất kỳ hàm nào mà chúng tôi có số lượng đối
số thay đổi, chúng tôi có thể khám phá khái niệm đó rất hữu ích.
Liên kết động.
Đây là khi bạn mở một thư viện tại thời điểm đó và nó khác một chút so với một đối
tượng được chia sẻ.
Bạn có thể mở thư viện trong thời gian chạy và nó làm tăng hiệu suất
và nó làm cho các chương trình thực thi nhỏ hơn.
Vì vậy, dlm mở có một thực tế thư viện gọi để làm điều này.
Tín hiệu, fork giao tiếp giữa các quá trình.
Tất cả điều này có thể được khám phá giữa các quá trình giao tiếp là khi bạn có hai
chương trình mà họ muốn giao tiếp.
Có nhiều cách khác nhau mà họ có thể giao tiếp.
Họ có thể giao tiếp thông qua các tập tin.
Họ có thể giao tiếp qua một cái gì đó được gọi là ổ cắm.
Họ có thể giao tiếp bằng cách sử dụng đường ống.
Có nhiều kỹ thuật khác nhau ở đó, nhưng đó là khi hai tiến trình
muốn nói chuyện với nhau.
Forking là nơi bạn có thể tạo một quy trình khác.
Có các thư viện để tạo các quy trình khác trong mã của bạn.
Nếu bạn định tạo một cái khác xử lý trong mã
của bạn, nó sẽ có không gian bộ nhớ địa chỉ riêng và nó có thể làm cho chương trình của bạn
hiệu quả hơn một chút.
Và sau đó báo hiệu, chúng tôi đã không tham gia vào rất nhiều, nhưng các tín hiệu
được sử dụng để gỡ lỗi tạo ra các tin nhắn đến các chương trình khác nhau.
Phân luồng và đồng thời.
Một chủ đề nâng cao khác mà bạn muốn học.
Điều này cho phép thực hiện nhiều điểm bên trong chương trình của bạn.
Nó cho phép bạn chạy mã gần như cùng một lúc.
Vì vậy, đó là một loại hiệu quả.
Nếu bạn có một nhiệm vụ chạy dài mà bạn cần làm trong chương trình của mình, chẳng hạn
như theo dõi dữ liệu hoặc chờ đợi dữ liệu hoặc có thể nhiệm vụ của bạn là đọc một tệp lớn,
bạn có thể tạo một tệp khác luồng để làm điều đó và sau đó vẫn
thực thi các phần khác của chương trình của bạn kết hợp cùng một lúc.
Ổ cắm.
Các ổ cắm được sử dụng để kết nối mạng.
Các ổ cắm sẽ được sử dụng nếu bạn muốn để kết nối với một máy tính khác và lấy
dữ liệu từ máy tính khác đó.
Kết nối mạng là rất lớn vì chúng tôi có internet và mọi thứ khác.
Vì vậy, bạn có thể tìm hiểu tất cả về ổ cắm và xem là tốt.
Có hai chức năng được gọi là setjump và longjump.
Đó là để khôi phục trạng thái.
Chúng tôi có thể nghiên cứu những điều đó trong chi tiết tốt hơn về quản
lý bộ nhớ và phân mảnh.
Đây không chỉ là về malloc, mà là đây là cách bạn có thể quản lý bộ nhớ của
mình và đặt nó trên heap hoặc stack.
Bạn có thể đảm bảo rằng chương trình của bạn hiệu quả hơn một chút,
vì vậy bạn không có nhiều phân mảnh.
Phân mảnh là nơi bạn có bộ nhớ ở các vị trí khác nhau
và không tuần tự nên có thể khó mất nhiều thời gian hơn để tra cứu bộ nhớ đó.
Bạn có thể giảm phân mảnh.
Chúng tôi có thể làm việc để làm cho các chương trình linh hoạt hơn.
Nói chung, các chương trình c khá di động.
Nhưng có nhiều kỹ thuật hơn bạn có thể sử dụng để đảm bảo rằng khi bạn viết chương trình của
mình một lần, nó sẽ chạy trên nhiều hệ điều hành khác nhau và bạn
không phải viết lại nó.
Về cơ bản chúng ta có thể sử dụng một số tiêu chuẩn posix
có sẵn trong c.
Chúng tôi có thể đảm bảo rằng tùy thuộc vào về phiên bản
khác nhau của tiêu chuẩn c, rằng chúng làm việc theo nhiều tiêu chuẩn bằng cách sử
dụng các quy ước nhất định.
Chúng tôi cũng có thể viết các chương trình giao diện trực tiếp với hạt nhân.
Hãy nhớ rằng, hạt nhân là bộ não của hệ điều hành.
Kernel chứa tất cả các trình điều khiển.
Nó chứa tất cả các loại cuộc gọi đến các chức năng bộ nhớ cấp thấp hơn.
Nó làm rất nhiều thông tin khác nhau.
Vì vậy, nhân có cụ thể chức năng mà bạn có thể giao tiếp với
nó trong chương trình c của bạn.
Điều này sẽ thấp cấp độ nội dung nhúng.
Vì vậy, chúng tôi có thể sử dụng các cuộc gọi như các điều khiển IO.
Chúng tôi có thể tạo trình điều khiển để nói chuyện trực tiếp với phần cứng.
Còn rất nhiều thứ nữa trên trình biên dịch và các cờ khác nhau
mà bạn có thể chuyển tới trình biên dịch hoặc trình liên kết, một lần nữa làm cho chương
trình của bạn hiệu quả hơn.
Chúng tôi không có cơ hội để nói rất nhiều
về rất nhiều loại cờ khác nhau.
Chúng tôi chủ yếu nói về dấu gạch ngang tường và một số cái cơ bản khác,
nhưng không có gì nâng cao hơn.
Chúng tôi đã nói về trình gỡ lỗi và cách gỡ lỗi ứng dụng.
Trình gỡ lỗi trong các khối mã là thông qua giao diện người dùng đồ họa.
Nhưng lợi thế thực sự của trình gỡ lỗi nằm dưới mui xe nó sử dụng gdb.
Gdb là trình gỡ lỗi gnu.
Và chúng tôi chỉ nói về các điểm ngắt và sử dụng nó thông qua giao diện người dùng đồ họa,
nhưng bạn có thể thực sự làm được nhiều việc hơn với gdb.
Chúng tôi có thể đi qua trình gỡ lỗi gdb từ bảng điều khiển đưa ra
các lệnh khác nhau, thực hiện nhiều hơn với hiểu tệp cốt lõi cách
đọc tệp lõi bằng gdb, a rất nhiều chủ đề nâng cao hay ở đó.
Hồ sơ và công cụ truy tìm.
Chúng tôi không thể nói về một số máy phân tích tĩnh, một số công cụ có thể phân tích
mã của bạn trước khi bạn chạy chương trình của bạn để
xem có bất kỳ mã chết nào không hoặc nếu có bất kỳ thực hành lập trình xấu nào.
Và sau đó là các công cụ theo dõi, s theo dõi, theo dõi d, hồ sơ g, đó là tất cả
các công cụ quan trọng bạn có thể sử dụng để xem để giúp bạn gỡ lỗi
và giúp bạn đo lường hiệu quả hoặc dung lượng bộ nhớ bạn đang sử dụng hoặc hiệu
suất của chương trình của bạn.
Có bộ nhớ bổ sung khác công cụ gỡ lỗi, chẳng hạn như valgrind.
Điều này sẽ giúp ích khi bạn có lượt thích điều kiện chủng tộc hoặc
bạn có vấn đề hỏng bộ nhớ.
Nhiều khi bạn đang quản lý bộ nhớ của bạn và bạn bị tràn bộ đệm hoặc rò rỉ
bộ nhớ, đó là rất khó để tìm thấy chúng.
Vì vậy, có những công cụ có thể giúp bạn tìm những thứ chẳng hạn như valgrind.
Và do đó, có rất nhiều chủ đề mà bạn có thể khám phá
để trở thành chuyên gia trong c.
Chúng tôi đã đề cập đến những điều cơ bản.
Chúng tôi đã chạm vào điều thực sự, thực sự những thứ quan trọng để bắt đầu.
Nhưng với những bổ sung này chủ đề, bạn có thể trở thành một chuyên gia.
Cảm ơn bạn.