操作符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

例题经典再现

在这里插入图片描述

在这里插入图片描述

希望本文对你有所帮助!
相关文章
|
8月前
|
C语言
[字符串和内存函数]strcmp和strncmp以及memcmp的区别
[字符串和内存函数]strcmp和strncmp以及memcmp的区别
191 0
|
8月前
|
Java 编译器 C语言
深入了解字符(串)函数 -- -- 字符(串)函数的实现(strlen、strcpy、strcmp、strcat、strstr、)内存函数的实现(memcpy、memmove)
深入了解字符(串)函数 -- -- 字符(串)函数的实现(strlen、strcpy、strcmp、strcat、strstr、)内存函数的实现(memcpy、memmove)
54 0
|
8月前
|
存储 编译器 C语言
strlen函数详解
strlen函数详解
336 2
|
C语言
自己实现strcpy和strlen函数
自己实现strcpy和strlen函数
104 0
|
8月前
strlen与sizeof 的基本用法
strlen与sizeof 的基本用法
60 0
|
8月前
|
安全
来自c++primer5的sizeof运算符
来自c++primer5的sizeof运算符
42 0
|
8月前
|
Serverless
sizeof和strlen的区别【详解】
sizeof和strlen的区别【详解】
63 0
|
C语言
详解sizeof、strlen、指针和数组等组合题
详解sizeof、strlen、指针和数组等组合题
104 0
strcpy函数与strncpy函数
strcpy函数与strncpy函数

热门文章

最新文章