Lỗi không gọi được hàm trong C++

Chào mọi người ạ , em đang học c++ đến phần mảng 1 chiều .
Khi build trên code block thì trình biên dịch không chạy được , em lên trên web build online thì chương trình của em chỉ gọi được hàm nhập mảng , còn hàm in mảng thì bị bỏ qua .
Code của em như sau

#include <iostream>
using namespace std;
void nhapMang(int * Mang , int phanTu)
{
    cout << " Nhap so phan tu mang : ";
    cin >> phanTu;
    for (int vitri = 0; vitri < phanTu ; vitri++ )
    {
        cout << "Nhap phan tu so " << vitri << " : " ;
        cin >> Mang[vitri];
    }
}
void inMang(int * Mang , int phanTu) // or declare inMang(int..., int Mang[])
{
    for (int vitri = 0 ; vitri < phanTu ; vitri++)
    {
        cout << "Phan tu " << vitri << " : " << Mang[vitri] << endl;
    }
}
int main()
{
    int phanTu;
    int Mang[phanTu];
    nhapMang(Mang,phanTu);
    inMang(Mang,phanTu);
    return 0;
}

Tham biến và tham trị :smiley:

2 Likes

em vẫn chưa hiểu rõ lắm , bác giải thích kỹ hơn được không ạ ?

Code này có đến hai lỗi:
1.

phanTu phải có giá trị từ trước mới đúng. Mà C++ chỉ cho optional thôi.
2. Hàm nhập không khởi tạo phanTu vì trong hàm đó nó chỉ là bản copy (tham trị). Gọi là tham trị vì ngay đó có thể truyền vào một hằng “số” (literal) để hàm có thể sử dụng.

3 Likes

em hiểu rồi , cảm ơn bác nhiều

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