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

c

(Lương Hoàng Tuấn ) #1

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;
}

(Văn Dương) #2

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.


(rogp10) #3

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


(Lương Hoàng Tuấn ) #4

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


(Lương Hoàng Tuấn ) #5

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


(nh) #6

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


(rogp10) #7

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.


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