[笔记].sizeof()和strlen()的区别.[C]
0赞
发表于 6/8/2010 9:27:27 PM
阅读(3752)
sizeof()
源代码:
1 |
#include <stdio.h> |
2 |
int main( void ) |
3 |
{ |
4 |
char msg[] = "Hello Nios!" ; |
5 |
printf ( "sizeof(msg) = %ld" , sizeof (msg)); |
6 |
return 0; |
7 |
} |
运行结果:
sizeof(msg) = 12
strlen()
源代码:
1 |
#include <stdio.h> |
2 |
#include <string.h> |
3 |
int main( void ) |
4 |
{ |
5 |
char msg[] = "Hello Nios!" ; |
6 |
printf ( "strlen(msg) = %ld" , strlen (msg)); |
7 |
return 0; |
8 |
} |
运行结果:
strlen(msg) = 11
结论
1. strlen(msg)是字符串msg的真实长度,而sizeof(msg)是字符串msg的存储长度。存储长度比真实长度大1,多一个结束符。
2. strlen()需要string.h支持,但sizeof()不需要string.h支持。
因此使用sizeof()-1既可得到字符串的正式长度,又可节省开销。
参考
1. Stephen Prata, C Primer Plus, Fifth Edition, 200411, Sams
2. WinIDE库函数使用手册