Hỏi về hàm sizeof() của mảng trong C++

Mình có đoạn code sau:

#include <iostream>

void getSize(int a[])
{
	std::cout << "\nsize at func: " << sizeof(a);
}

int main() 
{
	int a[] = { 8, 7, 2, 5, 3, 1 };

	std::cout << "\nsize at main: " << sizeof(a);

	getSize(a);
	
	return 0;
}

Sau khi chạy thì chương trình in ra:

size at main: 24
size at func: 8

Mình mới chuyển sang C++ nên chưa hiểu lắm về ngôn ngữ này. Mong mọi người giải thích giúp!

1 Like

Mảng khi truyền vào thì chỉ còn là con trỏ, vì vậy sizeof cũng chỉ là của con trỏ.

Thực ra sizeof() là một trong những toán tử đặc biệt, không thể nạp chồng.

2 Likes

Cảm ơn bạn nhiều! Bạn cho mình hỏi thêm về các tham số có tiền tố &, *, và ** được khộng ạ?

Bạn xem phần con trỏ với tham chiếu nhé :smiley:

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