Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.0k views
in Technique[技术] by (71.8m points)

string - C++ simple sizeof difference between char array and char pointer

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...