strlen()和sizeof()的区别:

  strlen()——>C字符串库函数,返回字符串的真实长度。它是从内存某位置开始扫描,直到碰到结束符'\0'停止,返回计数器值。

  sizeof()——>操作符,返回的是变量声明后“占用”的内存大小,可能不是实际大小。

    int num;

    sizeof(num);  返回num占用内存大小。也可写作sizeof num (当后面是变量名时,可不加括号。)

    sizeof(int);  返回int型数据占用内存大小。(当后面是类型名时,一定要加括号。)

下面的例子很好:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{ @autoreleasepool { char arr1[] = "wanger";
NSLog(@"strlen:%lu___sizeof:%lu",strlen(arr1),sizeof(arr1));
/*
strlen(arr1)————> 返回arr1里存储的字符串“wanger”的实际长度。
sizeof(arr1)————> 返回数组arr1声明后占用的内存大小。(虽有6个字符,但系统会自动加结束符'\0',所以为7)
*/ char arr2[] = "wanger";
NSLog(@"strlen:%lu___sizeof:%lu",strlen(arr2),sizeof(arr2));
/*
sizeof(arr2)————> 数组arr2声明时系统给它分配了10个字节。 */
char *p = "wanger";
NSLog(@"strlen:%lu___sizeof:%lu",strlen(p),sizeof(p));
/*
注意:sizeof(p)————> 它的意思是返回指针变量p的长度,我们知道指针变量的长度不因指针变量类型而异,它只跟系统有关。 */ }
return ;
}

C语言——strlen()和sizeof的区别的更多相关文章

  1. 函数strlen()和sizeof的区别

    函数strlen()和sizeof的区别: #include<stdio.h> #include<stdlib.h> #include<string.h> #def ...

  2. c语言中:strlen和sizeof的区别和它们分别交换各自作用领域(\0问题)时的细微差别!!!

    本人c语言初学菜鸟一枚,今天通过敲了一段简单代码,发现strlen和sizeof之间的一些关系,总结如下: 用strlen计算数组长度要考虑进去\0 用sizeof计算字符串长度也要考虑进去\0 而s ...

  3. 嵌入式-C语言基础:字符串strlen和sizeof的区别

    strlen表示的实际的字符串长度,不会把字符串结束符'\0'计算进去,而sizeof则不是实际的字符串长度,它会把字符串的结束标识符'\0'也包含进去. #include<stdio.h> ...

  4. strlen 与 sizeof 的区别

    void ngx_time_init(void) { ngx_cached_err_log_time.len = sizeof("1970/09/28 12:00:00") - 1 ...

  5. strlen和sizeof的区别

    1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型.该类型保证能容纳实现所建立的最大对象的字节大小.   2.sizeof是算符,strlen是函 ...

  6. strlen与sizeof的区别 [转]

    转自:http://www.cppblog.com/liangbo/archive/2006/10/06/13394.html 1.sizeof操作符的结果类型是size_t,它在头文件中typede ...

  7. strlen() 和 sizeof() 的区别

    1.strlen() 时函数,他在程序运行时才能计算.它的参数类型要求时 char *,且必须是以'/0'结尾.数组在传入时已经退化为指针.它的作用是返回数组中字符串的长度. 2.sizeof()时运 ...

  8. C++ 浅谈 strlen 与 sizeof的区别

    先举个栗子: 字符串数组跟字符串指针,然后分别使用sizeof跟strlen看输出结果. char strA[] = "2017-7-19"; char *strB = " ...

  9. C语言strlen函数和sizeof操作符

    字符'x'于字符串"x"的区别 'x' 属于基本类型(char)字符类型-----------------由1个字符组成('x') "x"属于派生类型(char ...

随机推荐

  1. javascript——touch事件介绍与实例演示

      分类: javascript2014-02-12 16:42 1742人阅读 评论(0) 收藏 举报 touch事件touchmovetouchstarttouchend 前言 诸如智能手机和平板 ...

  2. ViewState存储到服务器

    把viewstate保存在服务器上 将ViewState持久化保持在服务器端的代码,这样ViewState不占用网络带宽,因此其存取只是服务器的磁盘读取时间.并且它很小,可以说是磁盘随便转一圈就能同时 ...

  3. EventBusException:xxxx has no methods onEvent

    使用第三方框架EventBus,在register时出现Exception:xxxx has no methods onEvent. 场景:在Activity中没有接收事件,只是需要发送事件,但是有对 ...

  4. c#简单缓存使用,添加和修改

    private void SetCache(string CacheKey, object objObject, DateTime dt) { System.Web.Caching.Cache obj ...

  5. HDU 1021 - Fibonacci Again

    找规律,分析让 F[N] 每一项对 3 取余的余数: 1,2,0, 2,2,1,0, 1,1,2,0, 2,2,1,0, 1,1,2,0, 2,2,1,0 ......... 显然循环了 #inclu ...

  6. Ugly Number,Ugly Number II,Super Ugly Number

    一.Ugly Number Write a program to check whether a given number is an ugly number. Ugly numbers are po ...

  7. [iOS]リソースファイルの取得方法

    リソースファイルのパスを取得するためには下記のように実装する. -------------------------------------------------------------------- ...

  8. 14-利用SVD简化数据

    参考:http://blog.csdn.net/geekmanong/article/details/50494936 http://www.2cto.com/kf/201503/383087.htm ...

  9. 给新建的Cocos2d-x 3.X的Win32工程添加CocoStudio库

    1.我们在VS中找到"解决方案资源管理器", 在解决方案"HelloCocos"上点击右键, 选择添加现有项目. 在弹出的对话框中选择************* ...

  10. MFC中SQLite数据库的使用

    1打开数据库 BOOL playDlg::openData() { WCHAR a[100]; CString path; path = m_exePath+L"sentence_makin ...