C语言入门篇--sizeof与strlen基础理论

1.sizeof

(1)若求字符串占据 空间 的大小,包括字符串结尾处默认的'\0'。

(2)若所求不是字符串的大小,求的是数组、类型等的大小,不用考虑'\0',因为不是字符串,在结尾处无默认的'\0'。

(3)若明显出现'\0',则统计。

(4)返回一个变量或者类型的大小(以字节为单位)

2.strlen

求字符串内容的大小,统计字符串的字符个数,遇到'\0'停止统计,不统计'\0'。

3.知识点

3.1 对于数组

sizeof:结果就是数组大小。

strlen:在计算时会遍历整个数组,往后遍历的时候不一定能碰到'\0',会存在越界问题,

要么程序崩溃要么产生随机值,但结果一定至少是数组长度。

3.1.1 数组中无'\0'

#include <stdio.h>

int main()
{
	char s[] = { 'a', 'b', 'c' };
	printf("%d\n", sizeof(s));
	printf("%d\n", strlen(s));//随机值
	return 0;
}

3.1.2 数组有'\0'

(1)'\0'在最后

#include <stdio.h>

int main()
{
	char s[] = { 'a', 'b', 'c', '\0' };
	printf("%d\n", sizeof(s));
	printf("%d\n", strlen(s));

	return 0;
}

(2) '\0'在中间

#include <stdio.h>

int main()
{
	char s[] = { 'a', 'b','\0','c', };
	printf("%d\n", sizeof(s));
	printf("%d\n", strlen(s));
	return 0;
}

3.2 对于字符串

C语言中能够保存字符串的,只有char类型的数组。

3.2.1 字符串无明显的'\0'

#include <stdio.h>

int main()
{

	printf("%d\n", sizeof("abcd"));
	printf("%d\n", strlen("abcd"));
	return 0;
}

3.2.2 字符串有明显的'\0'

(1)'\0'在最后

#include <stdio.h>

int main()
{
	printf("%d\n", sizeof("abd\0"));
	printf("%d\n", strlen("abd\0"));

	return 0;
}

(2)'\0'在中间

#include <stdio.h>

int main()
{
	printf("%d\n", sizeof("abc\0d"));
	printf("%d\n", strlen("ab\0d"));
	return 0;
}

以上就是C语言入门篇--sizeof与strlen基础理论的详细内容,更多关于C语言基础的资料请关注我们其它相关文章!

(0)

相关推荐

  • C语言中sizeof()与strlen()函数的使用入门及对比

    sizeof()函数 1,是什么?     sizeof其实就是一个运算符,和那些+,-一样的东西,在程序编译的时候进行解析转换.虽然我们经常见到sizeof后面跟着个小括号,长得和函数差不多,但它和函数完全是两码事. 2,有什么用?     sizeof其实就是用于告诉我们编译器在为某一特定数据或者某种数据类型的数据在存储空间中开辟空间时,开辟的空间大小,以字节为单位. 3,怎么用?     sizeof(类型),或者sizeof(变量)都可以,得到的就是类型或者变量的存储空间.当对变量用的时

  • C语言中关于sizeof 和 strlen的区别分析

    1.编译时计算运算符sizeof,可用类型或变量做参数,计算占用内存的大小.sizeof后若是类型必须加括弧,若是变量名可不加括弧.sizeof(x)可用来定义数组维数如: 复制代码 代码如下: printf("%d\n", sizeof(short)); 输出的结果为短整型的长度2.用结构类型或变量做参数时,sizeof 返回实际的大小,当用于静态数组时,sizeof 返回全部数组的尺寸.sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸 2.运行时计算strlen,

  • C语言中sizeof()与strlen()的区别详解

    前言 sizeof()和strlen()经常会被初学者混淆,但其中有有很大区别: sizeof() 1. sizeof()[操作数所占空间的字节数大小]是一种c中的基本运算符. 可以以类型.指针.数组和函数等作为参数. 头文件类型为unsigned int. 运算值在编译的时候就出结果,所以可以用来定义数组维数. char a[5]="123"; int b=sizeof(a);//b=5 int c=strlen(a);//c=3 sizeof()是一种单目操作符,是用来计算你所使用

  • C语言中的sizeof操作符用法及和strlen的区别

    一. 定义: sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数.其返回值类型为size_t,在头文件stddef.h中定义.在32位系统中: char的sizeof值为1,char是我们编程能用的最小数据类型. short的sizeof值为2: int.float.long为4: double为8: 所有的指针的sizeof值都为4. 二.语法: sizeof有三种语法形式,如下: 1) sizeof( object ); //

  • C语言入门篇--sizeof与strlen基础理论

    1.sizeof (1)若求字符串占据 空间 的大小,包括字符串结尾处默认的'\0'. (2)若所求不是字符串的大小,求的是数组.类型等的大小,不用考虑'\0',因为不是字符串,在结尾处无默认的'\0'. (3)若明显出现'\0',则统计. (4)返回一个变量或者类型的大小(以字节为单位) 2.strlen 求字符串内容的大小,统计字符串的字符个数,遇到'\0'停止统计,不统计'\0'. 3.知识点 3.1 对于数组 sizeof:结果就是数组大小. strlen:在计算时会遍历整个数组,往后遍

  • C语言入门篇--字符串的基本理论及应用

    目录 字符串 1.常见字符串的情况 2.'\0'的证明 3.字符串的用法 3.1 用数组 3.1.1 给数组直接赋字符串 3.1.2 以单个字符赋入数组 3.2 用指针 4.字符串可直接输出 字符串 (1)由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串.eg:"hello world!" (2)字符串在结束时默认有 转义字符'\0',不作为内容,作为结束标志. (3)C语言无字符串类型,需借助 char*,char[

  • C语言入门篇--函数及数组用法

    目录 函数 1.函数的作用 2.函数的构成 (1)返回值 (2)函数名 (3)形参列表 (4)函数体 数组 1.定义数组 1.1不进行初始化 1.2进行初始化 1.3不给定数组元素个数 2.数组的经典用法 2.1求数组大小.元素大小.元素个数 2.2遍历 面向过程编程:C语言是面向过程的语言:在C语言中,把大部分的功能以一个个函数呈现,就称之为面向过程编程: 函数 是面向过程编程最关键的语法结构. 1.函数的作用 1.从工程上讲,函数可以让我们的代码更具有结构性,让代码更好看. 2.函数可以提升

  • C语言入门篇--注释,关键字typedef及转义字符详解

    目录 注释 1.注释意义 2.两种注释风格 2.1 C语言注释风格 2.2 C++注释风格 关键字typedef 1.注意 2.用法 语法结构 转义字符 1.转义字符及其含义 2.字面 转 特殊 3.特殊 转 字面 注释 1.注释意义 (1)代码中有不需要的代码可以直接删除,也可以注释掉. (2)有些代码比较难懂可以注释一下. 2.两种注释风格 2.1 C语言注释风格 /*xxxxxx*/ 一次可以注释一行或多行,但不能嵌套注释. eg: #include <stdio.h> int main

  • C语言入门篇--充分理解操作符

    目录 1.算术操作符 1.1除法运算 1.2取模运算 2.移位操作符 相关知识 1.移位运算是站在二进制角度移位的 2.左移右移,原始变量值不发生变化除非给原始变量赋值 3.整数移位运算不能整除时,只保留整数部分 4.C语言中的移位运算符 5.移位分为算术移左移.算术移右移和逻辑左移.逻辑右移 3.位操作符 3.1按位与& 3.2按位或 | 3.3异或 ^ 4.赋值操作符 5.单目操作符 5.1 逻辑反操作 ! 5.2 负值 - 正值 + 5.3 取地址 & 5.4 取反 ~ 5.5 前置

  • C语言入门篇--初识C语言及数据类型

    目录 1. 什么是C语言? 2.第一个C程序&&知识点 2.1 头文件 2.2 main函数 2.3 函数调用 2.4 return 0; 3. 数据类型 3.1 C语言数据类型 3.2 为什么有这么多数据类型? 3.3 各个数据类型的大小 1. 什么是C语言? (1)C语言是面向过程.编译型的编程语言(与C++.Java等面向对象的编程语言有所不同,ps:C与C++是兼容的),经过编译后最终形成可执行程序(即exe,可直接运行). (2)C语言非常经典,一般会在底层开发使用,Linux.

  • C语言入门篇--关键字static详解

    目录 1.修饰局部变量 1.1作用 1.2举例 (1)不加static (2)加static (3)静态局部变量的初始化只会进行一次 2.修饰全局变量 2.1作用 2.2举例 (1)不加static (2)加static 3.修饰函数 3.1作用 3.2举例 (1)不加static (2)加static 1.修饰局部变量 1.1作用 ststic修饰局部变量,会改变局部变量的生命周期,不改变作用域: 生命周期:和全局变量一样具有全局性,但在内存中的位置没有改变,还在在静态存储区中. 作用域:作用

  • C语言入门篇--初识指针和指针变量

    1.指针 指针就是地址(即一个数据). 2.指针变量 2.1概念 (1)指针变量是变量,是变量在内存中就会开辟空间,会有自己对应的的地址,有自己的变量大小. (2)指针变量里放的内容是地址(即指针). 2.2指针变量大小 32位平台下,4字节. 48位平台下,8字节. 2.3指针变量理解 理解前一定先看看,地址相关知识. #include <stdio.h> int main() { int a = 10; int *p = &a;//p为指针变量 printf("a的地址=

  • C语言入门篇--变量的左值和右值

    目录 1.普通变量 2.指针变量 2.1初步理解 2.2深入理解 在看此块内容前可以先看看内存及地址相关内容,更容易理解. 1.普通变量 一个变量是有三个属性: 1.变量的空间. 2.变量的内容. 3.变量的地址. 空间即若干字节,内容即空间里放了什么,地址即变量对应的空间地址. #include <stdio.h> int main() { int a = 10;//定义变量a,开辟4个字节的空间. a = 20;//见下述文字解释 int b = a;//见下述文字解释 return 0;

  • C语言入门篇--理解地址及内存

    1.内存 内存是电脑中一个重要的存储器,计算机中所有的程序都在内存中运行的,内存的性能对计算机的影响非常大. 内存是计算机与CPU进行沟通的桥梁,计算机会把程序由硬盘加载到内存中后再去使用. 为了有效的使用内存,把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节. 为了能够有效的访问即快速找到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址. 一般运行一个程序主要涉及计算机的三个设备:内存.CPU.硬盘. 1.1内存和CPU的关系 CPU是负责数据的运算和处理,内

随机推荐