Hỏi về Pointer trong C++

#include <iostream>
using namespace std;

char subject[5][10]={"alice","bob","maco","mary","tony"};

char *pointer[5]={&subject[0][0],&subject[1][0],&subject[2][0],&subject[3][0],&subject[4][0]};


int main(int argc, char** argv) {
	cout<<*pointer[4]<<endl;
	cout<<pointer[4]<<endl;
	return 0;
}

cho em hỏi tại sao pointer[4] lại ra dc tony vậy ạ?
Em cám ơn

1 Like

Trong c++ khi cout 1 pointer của char* nó sẽ tự động in 1 chuỗi (string ) từ pointer cho đến khi gặp ký tự \0 thay vì in ra giá trị pointer đó.
Bạn có thể thử theo code dưới đây:

#include <iostream>

using namespace std;

int main()
{
    int8_t numbers1[6] = {0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x00};
    int    numbers2[6] = {0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x00};
    short  numbers3[3] = {0x4865, 0x6C6C, 0x6F00};
    char*  charactors = (char*)numbers3;
    
    cout<< "Expected pointer of int8_t: " << numbers1 << endl;
    cout<< "Expected pointer of int   : " << numbers2 << endl;
    cout<< "Expected pointer of short : " << numbers3 << endl;
    cout<< "Expected pointer of char  : " << charactors << endl;
    
    return 0;
}
3 Likes

oke thank bạn (ko cho đánh dưới 20 ký tự mới ghê chứ)

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