Welcome to 16892 Developer Community-Open, Learning,Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

char * test = "test";
cout << sizeof(test);


char test2[] = "test";
cout << sizeof(test2);

Running this on visual studio 2010, why is the output 45?
Shouldn't test be a string literal and the sizeof a string literal be the number of character elements in the string literal including the terminating null character?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.8k views
Welcome To Ask or Share your Answers For Others

1 Answer

test is a pointer to a string literal, not a string literal (a char[]):

  • the sizeof(char*) is 4, relating to test
  • the sizeof(char[5]) is 5, relating to test2[]

hence 45 is the output.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to 16892 Developer Community-Open, Learning and Share
...