Chủ đề: Help Hàm Và Mảng
-
13-03-2008, 11:26 AM #1Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Help Hàm Và Mảng
Theo em thì truyền trị của mảng vào hàm phải có dấu & (ở dòng void nhap(int a[],int n) ) đáng lẻ phải la void nhap(int &a[],int n) mới đúng [IMG]images/smilies/waiting.gif[/IMG] [IMG]images/smilies/waiting.gif[/IMG] [IMG]images/smilies/waiting.gif[/IMG]
Còn chổ nhap(a,n); có khi nào nó hiểu a la a[0] không vậy [IMG]images/smilies/icon_question.gif[/IMG] [IMG]images/smilies/icon_question.gif[/IMG]
AS SOON AS GOOD
Mã:#include<stdio.h> #include<conio.h> void nhap(int a[],int n){ for(int i=0;i<n;i++){ printf(" Phan tu thu %d la ",i);scanf("%d",a[i]); }} void main(){clrscr(); int a[20],n; printf(" Nhap n ");scanf("%d",&n); nhap(a,n); for(int j=0;j<n;j++) printf(" %d ",a[j]); getch();}
View more random threads:
- tìm ước số chung lớn nhất (dùng hàm trên C++)
- Sinh tất cả các dãy nhị phân có độ dài N
- Giup em cai code ne voi
- Sao bài tính tổng các số nguyên tố này bị sai vậy mấy anh?
- Thắc mắc về toán tử
- Chương trình quản lý hàng hóa viết bằng C | Hàm thêm hàng hóa viết làm sao?
- cách tìm phần tử nhỏ thứ 2 trong mảng
- hàm này sao không chạy...
- Viết chương trình Kiểm Tra số may mắn
- Giúp mình 2 bài tập C++ này với
-
13-03-2008, 03:29 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Theo kiến thức hiện tại của mình thì mình có ý kiến sau:
- Thực ra complier đều dịch chương trình ra kiểu con trỏ(biến động)khi chạy, mặc dù bạn làm theo biến tĩnh.
- Mảng là một loại cấu trúc dữ liệu cơ bản nhất của một ngôn ngữ lập trình.
- Như thế thì người ta có thể dùng con trỏ để biểu diễn một mảng (cấp phát động).Nhưng mà về nguyên tắc tôi chưa thấy con trỏ kiểu mảng như bạn bao giờ.Bởi vì mảng là mảng các kiểu (như int,float,char,pointer), mảng mà mỗi phần tử là con trỏ thì có.
- Như thế thì về cách truyền tham biến thì Ta hay đặt toán tử lấy địa chỉ & trước biến đó...Như là &N đó.
- Còn mảng thì chính cái tên của nó là con trỏ trỏ đến phần tử đầu tiên của mảng rồi.Mà là con trỏ rồi thì khỏi cần &.
- Còn nhap(a,n) nó có hiểu là a[0] hay ko? thì theo tui là có.Bởi zì cái tên của mảng đóng vai trò như là một con trỏ trỏ đến phần tử đầu tiên của mảng như trên đã nói.
-
13-03-2008, 04:12 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Em cũng ko hiểu tại sao nhập mảng lại thêm &n làm gì ?
ví dụ : int nhap (int A[100],int &n)
nếu viết :int nhap (int A[100],int n) là sai vì sao ?
mong anh giải thích hộ em
-
13-03-2008, 04:20 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
hacker_mubaohiem nói khá đúng rùi đó. Tên mãng là con trỏ, cho nên chỉ có cách đóng gói nó vào class hay struct, union thì mới pass by value được còn bình thường truyền cỡ nào cũng chỉ là ref với pointer thui.
Demo :
Mã:#include <iostream> struct myS{ int arrD[5]; int data; myS():data(0){ for(int x = 0; x < 5; ++x) arrD[x] = 0; }}; void passbyVal(myS s){ for(int x = 0; x < 5; ++x){ s.arrD[x] = 10; }} int main(){ myS a; passbyVal(a); for(int x = 0; x < 5; ++x) { std::cout << a.arrD[x] << " "; } return 0;}
Còn chổ nhap(a,n); có khi nào nó hiểu a la a[0] không vậy
-
13-03-2008, 04:31 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
- Bạn ko đặt câu hỏi tại sao chỉ là hàm Nhapmang(int A[],int &N); mới có &N...Còn các hàm khác thì ko?
- Trong vấn đề truyền tham số thì có 2 loại tham số: tham biến và tham trị
+ Tham biến : giá trị của tham số được cập nhật khi ra khỏi pham vi của hàm
+ Tham trị : ngược lại tham biến thì nó ko đổi sau khi ra khỏi hàm.
- Hàm nhập mảng trước đó ta chưa nhập, nên chưa biết số n bằng bao nhiêu?
thì trong hàm đó ta nhập giá trị N vào thì sau khi ra khỏi hàm nhập mảng thì ta có N bằng giá trị ta vừa nhập. Có phải là trước khi gọi hàm nhapmang thì N ko xác định đúng hok?bi jờ nó đã có giá trị mới.Thì ta phải dùng kiểu tham biến (tức là &N).
- Ngược lại, nếu bạn ko sử dụng tham biến(int &N) mà là tham trị (int N) thì trước khi nhập mảng N:ko xác định suy ra hàm thực thi xong thì nó lại trở thành ko xác định.Vì là tham trị mà.Nên N ko xác định thì Chương trình sai là đúng rồi.
- Còn các hàm sau này bạn dùng tham trị (int N) vì N đã có giá trị xác định sau hàm nhapmang rồi.Nên ta có thể sử dụng nó.
- Còn scanf("%d",&n); thì toán tử & là toán tử lấy địa chỉ của biến (chừng nào học con trỏ sẽ rỏ).Ý nghĩa câu này là truyền từ bàn phím một số nguyên vào địa chỉ của n.
-Chúc bạn thành công...
-
14-03-2008, 04:21 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Rất cám ơn bạn đã giải thích hộ mình
Pallet nhựa Long An đã trở thành một trong những lựa chọn phổ biến cho nhu cầu vận chuyển và lưu trữ hàng hóa trong nhiều ngành công nghiệp. Với đặc tính nhẹ nhàng, chắc chắn và dễ vận chuyển, các...
Thanh lý pallet nhựa Long An giá rẻ