30/09/2018, 20:52

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

void main() {
	char mangChar[] = {'a','b','c',''};
	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?

Người bí ẩn viết 23:06 ngày 30/09/2018

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:

Làm sao để có thể hiển thị syntax highlighting bằng markdown? Các bạn phải đánh dấu ``` như ví dụ dưới đây Chú ý, dấu ``` được tạo ra bởi nút nằm bên trái số 1 trên bàn phím, nút này sẽ là ~ khi bấm giữ Shift Ví dụ cho C Nội dung: ``` void main() { } ``` Và đừng quên ``` ở cuối Kết quả void main() { } Ví dụ cho Pascal Nội dung: ``` Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the last statement of a block - adding one adds a "null stateme…

invi:

char mangChar[] = {‘1’,‘2’,‘3’,’\0’};

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

invi viết 23:02 ngày 30/09/2018

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ự?

viết 23:07 ngày 30/09/2018

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

Bài liên quan
0