Tại sao truyền tham biến vào hàm trong C lại báo lỗi

#include <stdio.h>
#include <conio.h>
// khai bao prototype
void time(int &ig , int &ip);
// ham doi phut thanh gio:phut

void main(void)
{
int igio, iphut;
printf("Nhap vao so phut : ");
scanf("%d", &iphut);
time(igio, iphut);
printf("%02d:%02d\n", igio, iphut);
getch();
}

void time(int &ig, int &ip)
{
ig = ip / 60;
ip %= 60;
}
// mấy bác cho em hỏi sao build nó báo lỗi

Câu này của C++ mà (C làm gì có kiểu int&) :smiley: chưa kể câu void main(void) nữa.

1 Like

Khi scanf bạn đưa vào địa chỉ tức là ủy nhiệm cho scanf sửa giá trị của biến. igio, iphut vẫn là int, sau đó bạn phải truyền địa chỉ &igio, &iphut vào hàm time (để ủy nhiệm hàm time sửa 2 biến igio, iphut):
Dòng 12 sửa thành:

time(igio, iphut)

Kiểu dữ liệu của địa chỉ int là con trỏ int.
Dòng 4 sửa thành:

void time(int* ig, int* ip)

Không dùng & được à bác… tại em thấy trong sách nó cho vd như vậy

Mình ko biết, sách lỗi đầy rẫy, lên tutorialspoint mà đọc

Sách của bạn dạy C++ ba rọi, pha trộn C và C++ :stuck_out_tongue_closed_eyes: , và chắc chắn không đụng đến các tính năng mới của C++.

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