Danh mục

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    
Hoai.2512

Hỗ trợ phí lưu trữ khi tải xuống: 4,000 VND Tải xuống file đầy đủ (8 trang) 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 ...

Tài liệu được xem nhiều: