您的位置:首页 > 其它

sizeof && strlen, 数组 && 指针

2012-10-30 10:27 253 查看
贴代码吧,最明显了:

#include <stdio.h>
#include <string.h>
int main()
{
char s[] = "hello";
char *p = s;
printf("sizeof(s)=%d,sizeof(p)=%d\n",sizeof(s),sizeof(p));  //6,4
printf("strlen(s)=%d,strlen(p)=%d",strlen(s),strlen(p));  //5,5
system("pause");
return 0;
}

比较:

#include <stdio.h>
#include <string.h>
int main()
{
char s[] = {'h', 'e','l'};
char *p = s;
printf("sizeof(s)=%d,sizeof(p)=%d\n",sizeof(s),sizeof(p));  //3,4
printf("strlen(s)=%d,strlen(p)=%d",strlen(s),strlen(p));  //3,3
system("pause");
return 0;
}
在将字符串以数组的形式存储的时候,会自动在最后加一个\0字符,所以sizeof = strlen + 1.

而如果一个一个指定数组的各个值,就不会自动出现\0了。

sizeof:

sizeof(数组名),指的是数组占据的物理空间;sizeof(指针变量),结果均是4.

strlen(数组名)和strlen(指针变量)结果均是字符串的长度,不包括结尾的\0字符。

又如:

#include <stdio.h>
#include <string.h>
int main()
{
int s[] = {1,2,3};
int *p = s;
printf("sizeof(s)=%d,sizeof(p)=%d\n",sizeof(s),sizeof(p));  //12,4
//   printf("strlen(s)=%d,strlen(p)=%d",strlen(s),strlen(p));  //5,5
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: