sizeof运算符和strlen()函数
首先放上代码和运行结果。(在VC6.0上运行)
#include<stdio.h>
#include<string.h> int main(void)
{
char s1[]="YeHuan";
char *s2="YeHuan";
char s3[]="Ye\0Huan";
char *s4="Ye\0Huan";
printf("sizeof(s1) %d\n",sizeof(s1));
printf("sizeof(s2) %d\n",sizeof(s2));
printf("sizeof(s3) %d\n",sizeof(s3));
printf("sizeof(s4) %d\n",sizeof(s4));
printf("sizeof(\"YeHuan\") %d\n",sizeof("YeHuan"));
printf("sizeof(\"Ye\\0Huan\") %d\n",sizeof("Ye\0Huan"));
printf("strlen(s1) %d\n",strlen(s1));
printf("strlen(s2) %d\n",strlen(s2));
printf("strlen(s3) %d\n",strlen(s3));
printf("strlen(s4) %d\n",strlen(s4));
printf("strlen(\"YeHuan\") %d\n",strlen("YeHuan"));
printf("strlen(\"Ye\\0Huan\") %d\n",strlen("Ye\0Huan"));
return ;
}
运行结果如下。
sizeof(s1) 7
sizeof(s2) 4
sizeof(s3) 8
sizeof(s4) 4
sizeof("YeHuan") 7
sizeof("Ye\0Huan") 8
strlen(s1) 6
strlen(s2) 6
strlen(s3) 2
strlen(s4) 2
strlen("YeHuan") 6
strlen("Ye\0Huan") 2
下面本人对这个运行结果作简要分析。
首先sizeof运算符是计算后面的变量(或者常量、数组名、类型标识符等等)所占内存空间字节大小,该运算结果在运行之前是确定的。
所以一个数组所占字节大小恰好是数组内元素个数乘以每个元素占字节大小,而数组内元素的个数(仅考虑一维数组)在定义数组时的中括号内给出,如不给出,则由初始化的内容决定。
由此可知s1数组内元素个数为7,因为后面字符串需要占用7个字节(包括字符串结尾标记'\0'),所以得到运行结果的第1、5行。
同理可得s3数组内元素个数为8(虽然里面有个'\0',但是要想完全存放里面所有的字符必须要8个字节),所以得到运行结果的第3、6行。
因为指针变量占4个字节(win32控制台应用程序中,包括字符指针、整型指针、数组指针、结构体指针、函数指针、二级指针、多级指针、通用指针void *等等),所以得到运行结果的第2、4行。
strlen()函数用于计算一个字符指针指向的区域(自动向后延伸,到'\0'结束)所能得到的字符串的长度(即字符个数,不包括结尾标记),所以得到运行结果的第7到12行。
sizeof运算符和strlen()函数的更多相关文章
- sizeof运算符和strlen函数的区别
1.sizeof是运算符,而strlen是函数. 2.sizeof操作符的运算结果为size_t,他在头文件中的typedef为unsigned int.该类型保证能容纳所操作对象的最大字节大小. 3 ...
- C++中sizeof操作符与strlen函数
sizeof操作符: sizeof是一个操作符,返回一条表达式或一个类型名字所占的字节数.返回值一个常量表达式,类型为size_t. size_t sizeof(type) size_t sizeof ...
- sizeof运算符、malloc函数及free函数
一.sizeof运算符的用法 1.sizeof运算符给出某个类型或变量在内存中所占据的字节数. int a; sizeof(a)=4; //sizeof(int)=4; double b; si ...
- sizeof运算符、虚函数、虚继承考点(待修改)
参考: http://blog.csdn.net/wangyangkobe/article/details/5951248 下面的文章解释有错误,不要看.......... 记住几句话: 编译器为每个 ...
- C++ sizeof操作符的用法和strlen函数的区别
摘要:本人首先介绍了C++中sizeof操作符的用法和注意事项,其次对比了和strlen的区别和使用,方便大家在写代码的时候查阅,和面试.笔试的时候复习. 目录: sizeof的用法: sizeof和 ...
- C语言中sizeof、strlen函数的部分理解
一.测试环境 Win10 + Visual Studio 2017 二.测试代码 #include "pch.h" #include <iostream> #inclu ...
- sizeof和strlen函数区别
一.sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等. 它的功能是:获得保 ...
- c语言之sizeof总结+strlen函数
一.sizeof的概念 Sizeof是C语言的一种单目操作符,如C语言的其他操作符++.–等.它并不是函数.Sizeof操作符以字节形式给出了其操作数的存储大小.操作数可以是一个表达式或括在括号内的类 ...
- C语言strlen函数和sizeof操作符
字符'x'于字符串"x"的区别 'x' 属于基本类型(char)字符类型-----------------由1个字符组成('x') "x"属于派生类型(char ...
随机推荐
- 常用方法 DataTable转换为Entitys
备注:摘自网上 有附地址 public static List<T> DataTableToEntities<T>(this DataTable dt) where T : c ...
- bzoj4868 期末考试 题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4868 显然我们只关注最后出分的学科. 刚开始想的是dp,然而不知道如何记录状态. 突然就想到了正解 ...
- java.lang.IllegalArgumentException: host parameter is null
即 URL 应为 http://www.baidu.com 但是实际配置成了 www.baidu.com 所以出现此错误
- [oracle/java/sql]用于上十万批量数据插入Oracle表的Java程序
程序下载:https://files.cnblogs.com/files/xiandedanteng/LeftInnerNotExist20191222.rar 原理:Oracle的Insert al ...
- css3中的盒子模型
1.示例一 实现左右布局,左侧宽度200px,右侧自适配 代码如下: <!DOCTYPE html> <html lang="en"> <head&g ...
- Java学习-053-JSON工具类演示
日常开发工作,经常遇到使用JSON数据,好久没有写了,今晚抽了三个小时时间写了个JSON工具类,主要包含如下几个方法: 获取JSON字符串所有键路径列表: 获取JSON字符串所有键值列表: JSON数 ...
- Selenium+Java完整框架搭建(2019完整版)
一.WebDriver框架开发实战 1.框架的思想 (1)什么是框架? 框架是可以被应用开发者定制的应用骨架 (2)为什么要写框架? 提高脚本可维护性 提高编写脚本的速度 提高脚本可阅读性 (3)框架 ...
- ubuntu 16.04 安装teamviewer
很多人可能会问,为什么要在ubuntu上安装teamview?shell不就够用了吗?但实际上,很多时候,在远程连接linux的时候,我们需要在图形用户界面上进行操作.现在我就遇到了一个实际的问题:每 ...
- Sword 哈希表
哈希表 哈希表是一种典型的以空间换取时间的数据结构,在没有冲突的情况下,对任意元素的插入.索引.删除的时间复杂度都是O().这样优秀的时间复杂度是通过将元素的key值以hash方法f映射到哈希表中的某 ...
- Jav面向对象
/* * 面向对象: * 1.关注现实存在的事物的各方面信息,从对象的角度出发,根据事物的特征进行程序设计 * 2.对象:用来描述客观事物的一个实体 * 3.类:具有相同属性和方法的一组对象的集合 * ...