Nhập xuất mảng con trỏ trong C

Lúc chạy chương trình thì nhập được nhưng xuất ra thì k có giá trị. Mọi người xem giúp mình sai chỗ nào với ạ? Mình cảm mơn :grinning::grinning:

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>

void Nhap(int *n, float *a){
	a = (float*)malloc(sizeof(float));
	printf("\nNhap n = ");
	scanf("%d",&*n);	
for(int i=0; i<*n; i++){
		printf("a[%d]: ",i+1);
		scanf("%f",a+i);
	}
}

void XuatMH(int n, float *a){
	//a = (float*)malloc(sizeof(float));
	for(int i=0; i<n; i++){
		printf("%f ",*(a+i));
	}
}

int main(){
	int *n;
	float *a;
	a = (float*)malloc(sizeof(float));
	n = (int*)malloc(sizeof(int));
	Nhap(n,a);
	XuatMH(*n,a);
	return 0;
}

n là số lượng phần tử thì sao lại dùng con trỏ. Chuyển n thành kiểu int rồi for i<n.

Nhập n xong mới có số phần tử để cấp phát chứ bạn :smiley:

2 Likes

Đề bài kiu sử dụng như vậy ạ

Mình đã thử. Và kq vẫn vậy :frowning:

vì bạn cấp phát trong hàm nhập nên phải truyền float *&a

1 Like

C không có tham chiếu :smiley:

Muốn truyền tham biến thì phải thêm một sao cho tham số hình thức (tức là biến thành con trỏ) và thêm địa chỉ khi truyền.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?