C语言——strlen()和sizeof的区别
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的区别的更多相关文章
- 函数strlen()和sizeof的区别
函数strlen()和sizeof的区别: #include<stdio.h> #include<stdlib.h> #include<string.h> #def ...
- c语言中:strlen和sizeof的区别和它们分别交换各自作用领域(\0问题)时的细微差别!!!
本人c语言初学菜鸟一枚,今天通过敲了一段简单代码,发现strlen和sizeof之间的一些关系,总结如下: 用strlen计算数组长度要考虑进去\0 用sizeof计算字符串长度也要考虑进去\0 而s ...
- 嵌入式-C语言基础:字符串strlen和sizeof的区别
strlen表示的实际的字符串长度,不会把字符串结束符'\0'计算进去,而sizeof则不是实际的字符串长度,它会把字符串的结束标识符'\0'也包含进去. #include<stdio.h> ...
- strlen 与 sizeof 的区别
void ngx_time_init(void) { ngx_cached_err_log_time.len = sizeof("1970/09/28 12:00:00") - 1 ...
- strlen和sizeof的区别
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型.该类型保证能容纳实现所建立的最大对象的字节大小. 2.sizeof是算符,strlen是函 ...
- strlen与sizeof的区别 [转]
转自:http://www.cppblog.com/liangbo/archive/2006/10/06/13394.html 1.sizeof操作符的结果类型是size_t,它在头文件中typede ...
- strlen() 和 sizeof() 的区别
1.strlen() 时函数,他在程序运行时才能计算.它的参数类型要求时 char *,且必须是以'/0'结尾.数组在传入时已经退化为指针.它的作用是返回数组中字符串的长度. 2.sizeof()时运 ...
- C++ 浅谈 strlen 与 sizeof的区别
先举个栗子: 字符串数组跟字符串指针,然后分别使用sizeof跟strlen看输出结果. char strA[] = "2017-7-19"; char *strB = " ...
- C语言strlen函数和sizeof操作符
字符'x'于字符串"x"的区别 'x' 属于基本类型(char)字符类型-----------------由1个字符组成('x') "x"属于派生类型(char ...
随机推荐
- Windows 应用程序结构
Windows 应用程序结构
- 对拍BAT
:loop makedata.exe K.exe Kture.exe fc a.out b.out if %errorlevel%==0 goto loop pause
- DSOframer 的简单介绍和资源整理
DSOframer 是微软提供一款开源的用于在线编辑 Word. Excel .PowerPoint 的 ActiveX 控件.国内很多著名的 OA 中间件,电子印章,签名留痕等大多数是依此改进而来的 ...
- android开发MD5加密工具类(一)
MD5加密工具类整理: package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.secu ...
- asp.net 两个页面之前传递数据
.在两个表单之间传递数据 看下面的代码: 对于WebForm1: private void Page_Load(object sender, System.EventArgs e) { ArrayLi ...
- Spring-----3、Spring的核心机制(依赖注入)
转载自:http://blog.csdn.net/hekewangzi/article/details/41345237
- mysql主从同步从库同步报错
1.在从库上设置master_info信息时出错 mysql> change master to master_host='192.168.157.143',master_port=3306,m ...
- 前端中的SEO
前端中的SEO: mate.title META标签分两大部分:HTTP标题信息(HTTP-EQUIV)和页面描述信息(NAME). <Meta name="Keywords" ...
- mongo设计(三)
原文:http://blog.mongodb.org/post/88473035333/6-rules-of-thumb-for-mongodb-schema-design-part-3 By Wil ...
- RedHat6.5网卡问题总结
问题描述:准备用RedHat6.5安装Oracle 12c RAC,系统环境准备好后发现,新版本的RedHat网卡配置跟以前不大一样,总结问题与解决方法如下: 1.找不到eth0文件 在使用RedHa ...