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