Lỗi con trỏ trong C

Mọi người ơi cho em hỏi cách khắc phục lỗi này với ạ

#include<stdio.h>

#define LENGTH 5

/*
	truyen mang vao ham
	tra ve mang tu mot ham nao do
*/

int* nhap(){
	static int arr[LENGTH];
	int i;
	for(i = 0; i< LENGTH; i++){
		scanf("%d", &arr[i]);
	}
	return arr;
}

void hienThi(int arr[] ){
	int i;
	for(i = 0; i< LENGTH; i++){
		printf("%5d", arr[i]);
	}
	printf("\n");
//	arr[0]*= 100;
}

int main(){

	int arr[LENGTH];
	int *b;

//	printf("%x\n", arr);
//	printf("%x\n", &arr);
//	printf("%x\n", &arr[0]);

	b= nhap();
	hienThi(b);
//	hienThi(arr);

	return 0;
}

Lỗi multiple definition do anh tạo quá 1 hàm nhap() hoặc có 1 hàm nhap() ở 1 file nào đó cùng folder với file anh đang dùng để chứa source code. Có lẽ là trong file main.c.

Em có chút góp ý với code của anh:

  1. Từ khoá static anh để ở trong hàm nhap() khi khai báo mảng có tác dụng gì?

  2. Sao lại dùng printf("%5d", &arr[i])?

Em mới thấy qua được 2 chỗ này, còn chỗ nào có vấn đề nữa không thì em chưa biết.

4 Likes

Có 1 điểm bất thường là project bạn đang có hai file main.

5 Likes

static khai báo biến tĩnh em chắc tác giả muốn giữ lại giá trị và địa chỉ của biến khi ra khỏi hàm

còn cái này thì in ra 5 vị trí cho phần tử trong mảng arr

code coi bộ ổn áp
có vẻ vấn đề nó nằm ở đây
image

3 Likes

sửa được rồi mọi người ngủ ngon mọi người,happy new year

1 Like

Hôm nay là thứ 2 ngảy 24/08/2020 :thinking: ?

2 Likes

mình nghe bài happy thôi chứ đã tết đâu

Nếu giữ lại giá trị của biến rồi thì tại sao anh lại phải khai báo mảng arr và thêm con trỏ b trong main làm gì nhỉ. Sử dụng luôn biến đó ko tốt sao?

Vấn đề không ở %5d mà ở toán tử &

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