操作符sizeof与函数strlen哪些事

简介:

@[TOC]

前言:

  • 博主实力有限,博文有什么错误,请你斧正!非常感谢!
  • 本文讨论操作符 sizeof与函数strlen()

操作符sizeof()

  • sizeof是操作符,不是函数(!!!!!!!!)

    image-20210903111643408
  • sizeof 只是测定数据类型(数组类型,指针类型等)在所占内存的大小,单位字节,`不具有`改变测定的数据的性质

    image-20210903112026444
  • 取地址 操作符‘&’

    • 如果取的是变量的地址,那就是变量的地址

      image-20210903155219568
    • 如果是数组名,那取得就是整个数组的地址

    • 不可对地址取地址
    image-20210903161214212
  • 在sizeof中,数组名不代表数组的首元素地址,另外只有当数组名单独使用时 才代表是整个数组

    image-20210903122741827
  • &arr 与 & arr不是一个意思

    *&arr 是取数组地址,后解引用得到数组

    & *arr 是先对数组首元素先解引用,后取其地址

    image-20210903122545150

size_t strlen( const char * str)

  • strlen()的返回值类型是 size_t(无符号整形),参数类型是 char *指针(即使传入的是其它的数据类型都会强制转化为 char *
  • strlen是计算字符串的长度,以‘\0’为计算结束标志

关于数组的必要理解

  • 无论一维还是二维数组名都代表数组首元素的地址

    • 因为内存中数据是连续存储的原因,即内存中,没有所谓的二维数组,只是为了我们编程的方便,抽像出来的。因此二维数组的实质是一维数组,但是其元素类型是一维数组
  • 对数组地址解引用后得到是·数组名---数组首元素地址
image-20210903120823965

例题经典再现

在这里插入图片描述

在这里插入图片描述

希望本文对你有所帮助!
相关文章
|
3月前
|
C语言
[字符串和内存函数]strcmp和strncmp以及memcmp的区别
[字符串和内存函数]strcmp和strncmp以及memcmp的区别
85 0
|
2月前
|
C语言
sizeof与strlen的使用及其区别
sizeof与strlen的使用及其区别
sizeof与strlen的使用及其区别
|
3月前
|
存储 编译器
strlen()和sizeof()的区别
strlen()和sizeof()的区别
26 0
|
3月前
|
存储 编译器 C语言
strlen函数详解
strlen函数详解
70 2
|
3月前
strlen与sizeof 的基本用法
strlen与sizeof 的基本用法
30 0
|
3月前
|
安全
来自c++primer5的sizeof运算符
来自c++primer5的sizeof运算符
24 0
|
8月前
strlen与sizeof的区别
strlen与sizeof的区别
30 0
|
11月前
sizeof与strlen区别
sizeof是关键字,参数可以是各种数据(包括函数,类型,对象,数组,指针……)用于计算数据所占字节大小 strlen是函数,参数类型必须是字符型指针(char *),用于计算字符串,从字符串的第一个地址开始遍历,直到遇到‘\0’停止
66 0
|
机器学习/深度学习 C语言
sizeof与strlen的区别和详解
sizeof与strlen的区别和详解