01/10/2018, 13:50

Mình viết chương trình C thì có thể viết như thế này không nhỉ, ở chỗ hàm con có &n ấy?

#include<stdio.h>
#include<conio.h>
#include<math.h>
#define MAX 100
Nhap(int a[],int &n)
{
	int i;
	do
	{
		printf("
Nhap so phan tu cua mang: ");
		scanf("%d",&n);
		if(n<10 || n>MAX) printf("So phan tu khong hop le, moi ban kiem tra lai");
		
	}
	while(n<10 || n>MAX);
	for(i=0;i<n;i++) {
	printf("Nhap a[%d]=",i);
	scanf("%d",&a[i]);}
}
Xuat(int a[],int n)
{
	int i;
	for (i=0;i<n;i++) {
	printf("%d",a[i]);
	printf("   ");}
}
main()
{
	int a[MAX];
	int n;
	Nhap(a,n);
	printf("Mang gom cac phan tu: ");
	Xuat(a,n);
}
HK boy viết 15:52 ngày 01/10/2018

Nhap(int a[],int &n)

&n là tham chiếu, mà tham chiếu không có trong C.

Bạn định nghĩa Nhap là gì? Là 1 hàm hay 1 thủ tục? Tại sao không có tên kiểu?

Quang Minh viết 15:51 ngày 01/10/2018

Bạn định nghĩa Nhap là gì? Là 1 hàm hay 1 thủ tục? Tại sao không có tên kiểu?

Cái này trong dev c đó a. Không có auto void

Chế Tiệp Chân Khoa viết 16:03 ngày 01/10/2018

bạn học lại về pointer nhé, pointer lưu địa chỉ của vùng nhớ

khi gọi hàm func:

  • khi cần chỉnh sửa một biến (n) đưa vào từ bên ngoài hàm, bạn đưa địa chỉ (&n) vào làm tham số func(&n)

bên trong định nghĩa hàm func :

  • khi định nghĩa hàm này, kiểu dữ liệu của tham số trên phải là pointer (để lưu được địa chỉ)
    void func(int *pointer_to_n)
  • bên trong hàm, cần scanf thì đưa pointer này vào luôn, vì rõ ràng nó đòi một địa chỉ
    scanf("%d", pointer_to_n)
  • cần lấy giá trị n, tức là giá trị tại địa chỉ được trỏ tới bởi pointer_to_n, thì dùng toán tử
    n = *pointer_to_n
Bài liên quan
0