xuat(int a[10]) hoàn toàn tương đương với xuat(int *a), tức đối số là biến con trỏ, do đó khi printf phải thêm dấu * để chuyển thành giá trị để in.
vì a là mảng ( là 1 chuổi ô nhó liên tiếp nhau, mặt định a là ô nhớ đầu tiên == a[0]) khi truyền mảng vào hàm thức chất là truyền địa chỉ của ô nhớ đầu tiên trong mảng, còn n là biến thông thường, xuat(int n) hoàn toàn khác với xuat(int *n).
mảng a trong main là nơi ta khai báo, mặt định trong main() lúc này là biến giá trị thông thường, nếu ta khai báo trong hàm xuat() mảng a[10] này thì trong hàm xuất nó mặt định là biến giá trị, khi printf không thêm dấu * gì hết, mà dùng a[i], chứ không được phép dùng a++
Cho 1 mảng int a[10];
Thì a thôi, sẽ là con trỏ hằng trỏ vào vị trí a[0].
a++ sẽ hiểu là thay đổi con trỏ, trỏ vào vị trí khác a[0] (tùy theo số lần chạy qua bước ++ mà thành a[1], a[2],...)
Con trỏ hằng, nghĩa là không thay đổi mà trỏ sang chỗ khác được.
Do vậy, đoạn code trong hàm main bị lỗi.
Tuy nhiên, khi int a[10] để vào tham số của hàm, thì a là 1 biến con trỏ mới, hoàn toàn là con trỏ động (tương đương *a), trỏ vào cái vùng bộ nhớ gốc lúc gọi hàm.
Lúc này, con trỏ a không còn là con trỏ hằng nữa, nên có thể thay đổi vị trí trỏ được, nên a++ chạy tốt.
lấy ví dụ:
======================
void xuat(int a[10],int n)
{
for(int i=0;i<n;i++) printf("%d",*(a++));
}
void main()
{
int b[10];
xuat(b,10);// trong main gọi hàm xuất bên trên
}
===================
Wednesday, January 21, 2015
Subscribe to:
Post Comments (Atom)
Popular Posts
-
Biểu diễn dãy nhị phân có độ dài N dưới dạng x[1...n] Thử các giá trị {0, 1} gán cho x [ i ]. Với mỗi giá trị thử gán x[i] lại thử các giá...
-
Mọi người download AOE 1 Full DOWNLOAD về rồi giải nén ra và vào phần setup chạy trước để phù hợp với cấu hình sau đó chạy thẳng là được DOW...
-
Sinh các hoán vị và tổ hợp 1) Sinh các hoán vị: Mọi tập hợp có n phần tử đều có đánh số các phần tử theo chỉ số k = 1,2,3,..,n. Thí ...
-
Bài viết sau được mình tổng hợp từ nhiều nguồn, với mục đích để tiện cho việc tra cứu và học tập. Mình cũng xin gửi lời cảm ơn chân thành đế...
-
Để liệt kê các chỉnh hợp không lặp chập k của tập S = {1,2,3,.., n} , ta có thể đưa về liệt kê các cấu hình x[1,..,k] trong đó xi thuộc tập ...
-
Sưu tầm: Cho n thành phố đánh số từ 1 đến n và m tuyến giao thông 2 chiều được cho bởi mảng C cấp nxn. Ở đây c[i,j]= c[j,i] = chi phí đường ...
-
Dãy ABC: Cho trước một số nguyên dương N ( N<= 100), hãy tìm một xâu chỉ gồm các ký tự A,B,C thỏa mãn các điều kiện sau: *Có độ dài N *Ha...
-
Sưu tầm: Cho một số nguyên dương n<=30 , hay tìm tất cả các cách phân tích số n thành tổng của các số nguyên dương, các cách phân tích là...
-
Ta gọi phép nén một số nguyên là tính tổng các chữ số của nó. Dễ thấy, sau một số phép nén, thì số còn lại chỉ có một chữ số và ko nén được ...
-
Từng ngồi tù vì vận chuyển tiền giả, song Thanh tiếp tục sang Trung Quốc mua gần 200 triệu đồng tiền giả mang về nước tiêu thụ. Gần 200 triệ...

0 comments:
Post a Comment