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 ...
随机推荐
- 你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ?
你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ? 长沙戴维营教育将为你解开这个巨大的谜团大BUG! http://www.ubuntucollege.cn/course/29/ ...
- AndroidUI--SlidingMenu使用例子
SlidingMenu简介: SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果.如Evernote ...
- maven简单工具命令
(一)聚合项目的创建//创建父项目mvn archetype:create -DgroupId=com.ztesoft.resmaster -DartifactId=lifecycle<pack ...
- 安装rvm命令行工具
rvm是一个命令行工具,可以提供一个便捷的多版本ruby环境的管理和切换. https://rvm.io/ 如果你打算学习ruby/rails, rvm是必不可少的工具之一. 这里所有的命令都是再用户 ...
- hdu2368Alfredo's Pizza Restaurant
Problem Description Traditionally after the Local Contest, judges and contestants go to their favour ...
- Ubuntu package managerment tools
Visual demostration References Understanding differences between dpkg and apt-get/aptitude tools. A ...
- Nginx提示502和504错误的终极解决方案
将脚本添加至计划任务: /usr/local/php/sbin/php-fpm reload 直接在crontab里写入php-fpm的平滑重启命令,"平滑重启"和" ...
- C语言函数qsort的使用方法
qsort函数stdlib.h文件中,函数原型为 void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,co ...
- [11-2] adaboost理解
以二分类问题为例({-1,+1}) adaboost步骤: 1.初始化u1=(1/N,1/N,-,1/N) 2.找到h,使最小化,记该h为g:计算作为该g的权重 3.更新ui: 4.重复2,3得到T个 ...
- Spring、整合Spring+JDBC
首先引入Spring包和JDBC所使用到的包: 配置beans.xml步骤: 1.配置dataSource的属性 2.将DataSource交给DataSourceTransactionManager ...