Tham khảo tài liệu ''ngôn ngữ lập trình c và c++'', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
“Ngơn ng l p trình C C++” Nguy n Tr ng Giang Ch ng 7*: M t s ch đ nâng cao 7*.1 Con tr a) Con tr null: − Là tr mà không tr t i đâu c − Khơng th s d ng tốn t * đ l y giá tr c a tr null N u làm nh v y d n t i l i run-time − Con tr null có ích dùng danh sách liên k t (linked-list) ho c hàm s tr v tr null tr ng h p hàm có l i (v i hàm tr v m t tr ) b) Con tr void: − Tr t i m t ki u ch a xác đ nh − Ng i ta c ng không th l y giá tr c a tr void ho c s d ng toán t s h c v i nh ng có th d dàng chuy n thành tr thu c ki u khác c) Con tr tr int int int t i tr : (pointer to pointer): Là tr ch a đ a ch c a tr khác i = 5, j = 6; k = 7; *ip1 = &i, *ip2 = &j; **ipp; // Con tr tr t i tr ipp = &ip1; *ipp = ip2; *ipp = &k; 7*.2 Tham chi u: − B n ch t: Là t o bí danh cho m t đ i t ng khác − Cú pháp: Ki u &bi n; Ví d : “Ngơn ng l p trình C C++” Nguy n Tr ng Giang int i; int &ir = i; // đ t ir bí danh c a i – cách g i khác cho bi n i Thay gán i = 8; có th vi t ir = 8; − So sánh tham chi u tr o Gi ng: u ch a đ a ch c a bi n Ví d : swap2(int &a, int &b) { int t=a; a=b; b=t; } G i hàm: int x,y; swap2(x, y); ho c int &dx = x, &dy = y; swap2(dx, dy); o Khác: Tham chi u ph i đ c kh i t o (tr t i bi n), tr có th tr đ n NULL Con tr có th thay đ i đ a ch tr t i, cịn tham chi u khơng 7*.3 Qu n lý b nh : − C cung c p cách riêng bi t đ c p phát b nh cho đ i t ng o C p phát t nh: Không gian nh cho đ i t ng (bi n, h ng, hàm v.v.) đ c cung c p vào th i m biên d ch Nh ng đ i t ng s t n t i ch ng ph n đo n mã nh phân ch a chúng t n t i o C p phát t đ ng: đ i t ng có th đ c l u tr vào stack Không gian nh đ c t đ ng gi i phóng tái s d ng sau kh i câu l nh s d ng chúng khơng cịn tác d ng n a o C đ th p phát đ ng: Các kh i nh v i ki u mong mu n có th đ c yêu c u vào th i m ch y s d ng hàm th vi n nh malloc() t m t vùng nh c g i heap Nh ng kh i nh s đ c s d ng tái s d ng sau hàm vi n free đ c g i − Nh ng cách ti p c n phù h p nh ng tình hu ng khác − C p phát t đ ng ho c c p phát t nh th ng hay đ c s d ng vi c l u tr đ c trình biên d ch qu n lý, giúp l p trình viên tránh kh i nh ng sai sót d g p ph i ph i t c p phát gi i phóng b nh − Ví d : C p phát s d ng malloc free “Ngơn ng l p trình C C++” Nguy n Tr ng Giang o C p phát đ ng cho m ng chi u: scanf("%d", &n); int memsize = n*sizeof(int); if ( (arr = (int *)malloc(memsize) ) == NULL ) { printf("Khong cap phat duoc bo nho"); exit(1); } // free(arr); o C p phát đ ng cho m ng chi u: float **ptr; int m,n,i; //Kh i t o m ng ptr[m][n] //Kh i t o chi u th nh t c a m ng ptr=(float **)malloc(m*sizeof(*ptr)); for(i=0;i