Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 8
Số trang: 8
Loại file: pdf
Dung lượng: 0.00 B
Lượt xem: 15
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Một ngôn ngữ cốt lõi đơn giản, với các chức năng quan trọng chẳng hạn như là những hàm hay việc xử lý tập tin sẽ được cung cấp bởi các bộ thư viện các thủ tục.
Nội dung trích xuất từ tài liệu:
Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 8Updatesofts.com Ebooks TeamNó ñư c dùng như là m t ti n t c a bi n và có th ñư c d ch là ñ a ch c a, vì v y&variable1 có th ñư c ñ c là ñ a ch c a variable1.Toán t tham chi u (*)Nó ch ra r ng cái c n ñư c tính toán là n i dung ñư c tr b i bi u th c ñư c coi như làm t ñ a ch . Nó có th ñư c d ch là giá tr ñư c tr b i..*mypointer ñư c ñ c là giá tr ñư c tr b i mypointer.Vào lúc này, v i nh ng ví d ñã vi t trênandy = 25;ted = &andy;b n có th d dàng nh n ra t t c các bi u th c sau là ñúng:andy == 25&andy == 1776ted == 1776*ted == 25Khai báo bi n ki u con trVì con tr có kh năng tham chi u tr c ti p ñ n giá tr mà chúng tr t i nên c n thi t ph ich rõ ki u d li u nào mà m t bi n con tr tr t i khai báo nó. Vì v y, khai báo c a m tbi n con tr s có m u sau:type * pointer_name;trong ñó type là ki u d li u ñư c tr t i, không ph i là ki u c a b n thân con tr . Ví d :int * number;char * character;float * greatnumber;ñó là ba khai báo c a con tr . M i bi n ñ u tr t i m t ki u d li u khác nhau nhưng cba ñ u là con tr và chúng ñ u chi m m t lư ng b nh như nhau (kích thư c c a m tbi n con tr tùy thu c vào h ñi u hành). nhưng d li u mà chúng tr t i không chi mlư ng b nh như nhau, m t ki u int, m t ki u char và cái còn l i ki u float.Tôi ph i nh n m nh l i r ng d u sao (*) mà chúng ta ñ t khi khai báo m t con tr ch cónghĩa r ng: ñó là m t con tr và hoàn toàn không liên quan ñ n toán t tham chi u màchúng ta ñã xem xét trư c ñó. ðó ñơn gi n ch là hai tác v khác nhau ñư c bi u di n b icùng m t d u. value1==10 / value2==20// my first pointer#include Trang 56Updatesofts.com Ebooks Teamint main (){ int value1 = 5, value2 = 15; int * mypointer; mypointer = &value1; *mypointer = 10; mypointer = &value2; *mypointer = 20; cout Updatesofts.com Ebooks Teamint *p1, *p2;dòng này khai báo hai con tr b ng cách ñ t d u sao (*) trư c m i con tr . Nguyên nhânlà ki u d li u khai báo cho c dòng là int và vì theo th t t ph i sang trái, d u saoñư c tính trư c tên ki u. Chúng ta ñã nói ñ n ñi u này trong bài 1.3: Các toán t .Con tr và m ng.Trong th c t , tên c a m t m ng tương ñương v i ñ a ch ph n t ñ u tiên c a nó, gi ngnhư m t con tr tương ñương v i ñ a ch c a ph n t ñ u tiên mà nó tr t i, vì v y th ct chúng hoàn toàn như nhau. Ví d , cho hai khai báo sau:int numbers [20];int * p;l nh sau s h p l :p = numbers; ñây p và numbers là tương ñương và chúng có cũng thu c tính, s khác bi t duy nh tlà chúng ta có th gán m t giá tr khác cho con tr p trong khi numbers luôn tr ñ n ph nt ñ u tiên trong s 20 ph n t ki u int mà nó ñư c ñ nh nghĩa v i. Vì v y, không gi ngnhư p - ñó là m t bi n con tr bình thư ng, numbers là m t con tr h ng. L nh gán sauñây là không h p l :numbers = p;b i vì numbers là m t m ng (con tr h ng) và không có giá tr nào có th ñư c gán chocác h ng.Vì con tr cũng có m i tính ch t c a m t bi n nên t t c các bi u th c có con tr trong víd dư i ñây là hoàn toàn h p l : 10, 20, 30, 40, 50,// more pointers#include int main (){ int numbers[5]; int * p; p = numbers; *p = 10; p++; *p = 20; p = &numbers[2]; *p = 30; p = numbers + 3; *p = 40; p = numbers; *(p+4) = 50; for (int n=0; nUpdatesofts.com Ebooks Team}Trong bài m ng chúng ta ñã dùng d u ngo c vuông ñ ch ra ph n t c a m ng màchúng ta mu n tr ñ n. C p ngo c vuông này ñư c coi như là toán t offset và ý nghĩac a chúng không ñ i khi ñư c dùng v i bi n con tr . Ví d , hai bi u th c sau ñây:a[5] = 0; // a [offset of 5] = 0*(a+5) = 0; // pointed by (a+5) = 0 tương ñương và h p l b t k a là mlà hoàn toàn ng hay là m t con tr .Kh i t o con trKhi khai báo con tr có th chúng ta s mu n ch ñ nh rõ ràng chúng s tr t i bi n nào,int number;int *tommy = &number;là tương ñương v i:int number;int *tommy;tommy = &number;Trong m t phép gán con tr chúng ta ph i luôn luôn gán ñ a ch mà nó tr t i ch khôngph i là giá tr mà nó tr t i. B n c n ph i nh r ng khi khai báo m t bi n con tr , d u sao(*) ñư c dùng ñ ch ra nó là m t con tr , và hoàn toàn khác v i toán t tham chi u. ðólà hai toán t khác nhau m c dù chúng ñư c vi t v i cùng m t d u. Vì v y, các câu l nhsau là không h p l :int number;int *tommy;*tommy = &number;Như ñ i v i m ng, trình biên d ch cho phép chúng ta kh i t o giá tr mà con tr tr t ib ng giá tr h ng vào th i ñi m khai báo bi n con tr :char * terry = hello;trong trư ng h p này m t kh i nh tĩnh ñư c dành ñ ch a hello và m ...
Nội dung trích xuất từ tài liệu:
Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 8Updatesofts.com Ebooks TeamNó ñư c dùng như là m t ti n t c a bi n và có th ñư c d ch là ñ a ch c a, vì v y&variable1 có th ñư c ñ c là ñ a ch c a variable1.Toán t tham chi u (*)Nó ch ra r ng cái c n ñư c tính toán là n i dung ñư c tr b i bi u th c ñư c coi như làm t ñ a ch . Nó có th ñư c d ch là giá tr ñư c tr b i..*mypointer ñư c ñ c là giá tr ñư c tr b i mypointer.Vào lúc này, v i nh ng ví d ñã vi t trênandy = 25;ted = &andy;b n có th d dàng nh n ra t t c các bi u th c sau là ñúng:andy == 25&andy == 1776ted == 1776*ted == 25Khai báo bi n ki u con trVì con tr có kh năng tham chi u tr c ti p ñ n giá tr mà chúng tr t i nên c n thi t ph ich rõ ki u d li u nào mà m t bi n con tr tr t i khai báo nó. Vì v y, khai báo c a m tbi n con tr s có m u sau:type * pointer_name;trong ñó type là ki u d li u ñư c tr t i, không ph i là ki u c a b n thân con tr . Ví d :int * number;char * character;float * greatnumber;ñó là ba khai báo c a con tr . M i bi n ñ u tr t i m t ki u d li u khác nhau nhưng cba ñ u là con tr và chúng ñ u chi m m t lư ng b nh như nhau (kích thư c c a m tbi n con tr tùy thu c vào h ñi u hành). nhưng d li u mà chúng tr t i không chi mlư ng b nh như nhau, m t ki u int, m t ki u char và cái còn l i ki u float.Tôi ph i nh n m nh l i r ng d u sao (*) mà chúng ta ñ t khi khai báo m t con tr ch cónghĩa r ng: ñó là m t con tr và hoàn toàn không liên quan ñ n toán t tham chi u màchúng ta ñã xem xét trư c ñó. ðó ñơn gi n ch là hai tác v khác nhau ñư c bi u di n b icùng m t d u. value1==10 / value2==20// my first pointer#include Trang 56Updatesofts.com Ebooks Teamint main (){ int value1 = 5, value2 = 15; int * mypointer; mypointer = &value1; *mypointer = 10; mypointer = &value2; *mypointer = 20; cout Updatesofts.com Ebooks Teamint *p1, *p2;dòng này khai báo hai con tr b ng cách ñ t d u sao (*) trư c m i con tr . Nguyên nhânlà ki u d li u khai báo cho c dòng là int và vì theo th t t ph i sang trái, d u saoñư c tính trư c tên ki u. Chúng ta ñã nói ñ n ñi u này trong bài 1.3: Các toán t .Con tr và m ng.Trong th c t , tên c a m t m ng tương ñương v i ñ a ch ph n t ñ u tiên c a nó, gi ngnhư m t con tr tương ñương v i ñ a ch c a ph n t ñ u tiên mà nó tr t i, vì v y th ct chúng hoàn toàn như nhau. Ví d , cho hai khai báo sau:int numbers [20];int * p;l nh sau s h p l :p = numbers; ñây p và numbers là tương ñương và chúng có cũng thu c tính, s khác bi t duy nh tlà chúng ta có th gán m t giá tr khác cho con tr p trong khi numbers luôn tr ñ n ph nt ñ u tiên trong s 20 ph n t ki u int mà nó ñư c ñ nh nghĩa v i. Vì v y, không gi ngnhư p - ñó là m t bi n con tr bình thư ng, numbers là m t con tr h ng. L nh gán sauñây là không h p l :numbers = p;b i vì numbers là m t m ng (con tr h ng) và không có giá tr nào có th ñư c gán chocác h ng.Vì con tr cũng có m i tính ch t c a m t bi n nên t t c các bi u th c có con tr trong víd dư i ñây là hoàn toàn h p l : 10, 20, 30, 40, 50,// more pointers#include int main (){ int numbers[5]; int * p; p = numbers; *p = 10; p++; *p = 20; p = &numbers[2]; *p = 30; p = numbers + 3; *p = 40; p = numbers; *(p+4) = 50; for (int n=0; nUpdatesofts.com Ebooks Team}Trong bài m ng chúng ta ñã dùng d u ngo c vuông ñ ch ra ph n t c a m ng màchúng ta mu n tr ñ n. C p ngo c vuông này ñư c coi như là toán t offset và ý nghĩac a chúng không ñ i khi ñư c dùng v i bi n con tr . Ví d , hai bi u th c sau ñây:a[5] = 0; // a [offset of 5] = 0*(a+5) = 0; // pointed by (a+5) = 0 tương ñương và h p l b t k a là mlà hoàn toàn ng hay là m t con tr .Kh i t o con trKhi khai báo con tr có th chúng ta s mu n ch ñ nh rõ ràng chúng s tr t i bi n nào,int number;int *tommy = &number;là tương ñương v i:int number;int *tommy;tommy = &number;Trong m t phép gán con tr chúng ta ph i luôn luôn gán ñ a ch mà nó tr t i ch khôngph i là giá tr mà nó tr t i. B n c n ph i nh r ng khi khai báo m t bi n con tr , d u sao(*) ñư c dùng ñ ch ra nó là m t con tr , và hoàn toàn khác v i toán t tham chi u. ðólà hai toán t khác nhau m c dù chúng ñư c vi t v i cùng m t d u. Vì v y, các câu l nhsau là không h p l :int number;int *tommy;*tommy = &number;Như ñ i v i m ng, trình biên d ch cho phép chúng ta kh i t o giá tr mà con tr tr t ib ng giá tr h ng vào th i ñi m khai báo bi n con tr :char * terry = hello;trong trư ng h p này m t kh i nh tĩnh ñư c dành ñ ch a hello và m ...
Tìm kiếm theo từ khóa liên quan:
Tài liệu lập trình ngôn ngữ lập trình ngôn ngữ C Ngôn ngữ lập trình mệnh lệnh Tiêu chuẩn ANSI tiêu chuẩn ISOTài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 277 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 268 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 267 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 227 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 218 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 209 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 186 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 170 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 169 0 0