帮忙分析一下这个C程序,谢谢。

[复制链接]
查看11 | 回复4 | 2011-3-25 22:05:35 | 显示全部楼层 |阅读模式
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
main()
{
char a[]="abcdefghijk",*b="abcdefghijk";
printf("a=%s,b=%s\n",a,b);
printf("sizeof(a)=%d,strlen(a)=%d\nsizeof(b)=%d,strlen(b)=%d\n",
sizeof(a),strlen(a),sizeof(b),strlen(b));
}
结果为:
a=abcdefghijk,b=abcdefghijk
sizeof(a)=12,strlen(a)=11
sizeof(b)=4,strlen(b)=11
请问sizeof和strlen有什么区别,还有为什么sizeof(b)=4?
多谢了

回复

使用道具 举报

千问 | 2011-3-25 22:05:35 | 显示全部楼层
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,知道遇到'\0'停止。
回复

使用道具 举报

千问 | 2011-3-25 22:05:35 | 显示全部楼层
sizeof包括字符串结束符('\0'),strlen不包括。b是指针型变量,所占字节长度自然是4个字节。
回复

使用道具 举报

千问 | 2011-3-25 22:05:35 | 显示全部楼层
sizeof(b)得到的是指针b的大小
回复

使用道具 举报

千问 | 2011-3-25 22:05:35 | 显示全部楼层
sizeof是结构的长度,strlen是字符串的长度b是指针,在32为系统中指针是32b=4B
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行