LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2868|回复: 6

strlen()和sizeof()这两个函数好象很近阿?

[复制链接]
发表于 2004-3-16 11:10:53 | 显示全部楼层 |阅读模式
打印相同的字符的结果不一样。
    printf( "%d\n", sizeof( "" ) );
这里的结果是1
    printf( "%d\n", strlen( "" ) );
这里的结果是0

他们的用法都一样吗?
还有sizeof()的资料比较少。。。
发表于 2004-3-16 11:35:47 | 显示全部楼层
完全不一样
strlen()是返回一个字符串的长度,也就是说他的参数只能是字符串。
而sizeof()是返回一个变量所占用的空间。它的参数可以是变量,也可以是类型,比方说,你可以写成sizeof(int)。
还有一点是strlen是一个函数,而sizeof是一个操作符,就像+,-一样的,所以你也可以写成sizeof int。
看一下这段代码:

  1. #include<iostream>
  2. using namespace std;
  3. int
  4. main()
  5. {
  6.     char str[10]="abcd\0";
  7.     cout << "length is " << strlen(str) <<endl
  8.         << "size is " << sizeof(str) << endl;
  9.     return 0;
  10. }
复制代码

结果:
length is 4
size is 10
 楼主| 发表于 2004-3-16 11:37:57 | 显示全部楼层
懂了!!非常感谢!!
发表于 2004-5-24 11:47:32 | 显示全部楼层
这也算精华贴????
发表于 2004-5-24 17:54:01 | 显示全部楼层
:thank
多多益善

请问二楼那个是否是C++?源码看不懂
发表于 2004-5-24 18:02:01 | 显示全部楼层
上面的是C++
发表于 2004-5-24 22:06:42 | 显示全部楼层
//对不起啊,我功力浅,用vc给你作罢(我暂时学windows编程)
//这是一个另类解决方法.............................
//注意fuc2()函数....................................
// 123.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"
fuc(char array[])
{
cout << array << '\n';
cout << sizeof array <<'\n' ;

}
fuc2(char *array,int i)
{
        cout << i <<'\n';

}
int main(int argc, char* argv[])
{
    char array[]="我要学好c语言";
        cout << array << '\n';
        cout << sizeof array<<'\n' ;
        fuc(array);
        fuc2(array,sizeof array);
        return 0;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表