01/10/2018, 12:05

Lỗi chương trình C

Em đang làm bài tập liên quan đến khai báo động và sử dụng con trỏ.
Đoạn code dưới này của em chạy được đến hết đoạn khai báo còn đoạn kết quả không chạy được, báo responding…
Ai xem lại hộ em với xem sai chỗ nào ạ ?

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

int khaibao(int *mang);
void ketqua(int *mang, int spt);

int main()
{
	int *a,*b;
	int c=khaibao(a);
	int d=khaibao(b);
	ketqua(a,c);
	ketqua(b,d);
}

int khaibao(int *mang)
{
	int n;
	int i;
	printf("Nhap vao so phan tu: ");
	scanf("%d", &n);
	mang = calloc(n,sizeof(int));
	
	for(i=0;i<n;i++)
	{
		printf("a[%d] = ", i);
		scanf("%d", mang+i);
	}
	return n;
}

void ketqua(int *mang, int spt)
{
	int i;
	for(i=0;i<spt;i++) printf("%d ", *(mang+i));
}
Student X viết 14:18 ngày 01/10/2018

à. cái này bạn nên tìm hiểu kĩ hơn về con trỏ. nếu bạn khai báo int *a ở hàm main mà muốn cấp phát động cho n trong function thì bạn có thể truyền cào param là int **a. hoặc bạn sẽ cấp phát lại trong hàm sau đó return ra con trỏ này ra giá trị trả về(cách này mình k thích lắm).

Nam Phan viết 14:15 ngày 01/10/2018

Thế mình muốn khai báo 1 mảng trong hàm function và muốn nó tồn tại trong xuyên suốt hàm main thì khai báo ntn được nhỉ ? Còn nếu dùng param thì dùng ntn bạn giải thích kĩ hơn được không. cám ơn bạn nhiều ạ.

Student X viết 14:18 ngày 01/10/2018

Nam Phan viết 14:11 ngày 01/10/2018

bạn chú thích thêm về chương trình được không ? mình hơi kém…

Student X viết 14:11 ngày 01/10/2018

Nam Phan viết 14:08 ngày 01/10/2018

Thực sự vẫn chưa hiểu :v nếu bạn làm ơn có thể sửa lại của mình thì mình có thể so sánh được điểm khác nhau chứ ntn vẫn chưa hiểu gì. cám ơn bạn nhiều

Student X viết 14:15 ngày 01/10/2018

Bài liên quan
0