Hỏi về mảng char trong C++

void main() {
	char mangChar[] = {'a','b','c','\0'};
	cout << mangChar;  // tại sao in ra xâu abc chứ ko phải địa chỉ mảng như mảng int?
}

Tại sao lại in ra màn hình là abc chứ không phải địa chỉ mảng như mảng int?

Bạn vui lòng phải để code của mình trong markdown nhé, tham khảo cách làm tại đây:

Mình không hiểu ý bạn lắm? Sao các phần tử đều là số mà bạn để char làm gì? Char cũng ok nhưng “khoảng rộng” của nó không bằng int nên nhiều khi cũng sinh ra lỗi :slight_smile:

1 Like

mình sửa rồi đây, để ‘1’ thì cũng là ký tự mà, m đổi thành ‘a’,‘b’,‘c’ rồi đấy.

void main() {
	int mangInt[3] = {1,2,3};
	cout << mangInt; //in ra địa chỉ
}
void main() {
	char mangChar[] = {'a','b','c','\0'};
	cout << mangChar; // in ra abc
}

Với mảng int thì nó sẽ in ra 1 địa chỉ, tại sao với mảng char thì nó in ra xâu ký tự?

Do toán tử << trong C++ được overload cho các mảng kiểu const char* xuất ra một xâu và const void* thì xuất ra địa chỉ của phần tử đầu của mảng. Mảng mangChar sẽ được ép về kiểu const char* rồi truyền cho toán tử overload << nên sẽ xuất ra một xâu, còn mảng mangInt thì được ép kiểu sang const void* nên chỉ xuất địa chỉ của phần tử đầu tiên

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