导图社区 C语言数组扩展
数组名arr本质指向数组首行的指针,结合了文字说明与代码示例,总结了二维数组的数组名本质、数组和指针的异同、指针运算以及数组名的意义等内容。
这是一篇关于操作符详解的思维导图,详细介绍了打印小数、移位操作符、位操作符、单目操作符等操作符的用法,以及原码、反码和补码的相互转换,还有无符号数(unsigned)和有符号数(signed)的区别。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
数组和指针的相同点--在二维数组里都是指针
二维数组的数组名 arr 本质是指向数组首行的指针(类型为 int (*)[N]),arr 等价于 &arr[0]
第i行的数组名arr[i]则代表着第i行这个数组本身,类型为(type)[j]
除了sizeof(数组)和&数组两者之外,其他的所有数组名都是数组首元素的地址(包括一维数组)
*(p+i)等于*(arr+i)
在二维数组里,arr[i][j]等价于*(*(arr+i)+j)
arr的本质是一个指向数组的指针,内部存储的是指针
arr等价于指向第一行数组名(也就是第一行第一个元素的地址)
(arr+i),意思是选中第i行的第一个元素的地址
*(arr+i)意思是得到所指向的整个数组
(*(arr+i)+j)意思是取到 [i] [j ]的地址
*(*(arr+i)+j)
*解引用,取出第i行j列的值
例题清清楚楚
除了sizeof(数组)单纯的一个数组没有加其他数字和&数组两者之外,其他的所有数组名都是数组首元素的地址(包括一维数组)
二维数组中-->arr[0]+1 的意思是第一行第二个元素地址
sizeof不直接访问()里的内存空间,根据类型计算结果
但是strlen需要
https://www.doubao.com/thread/wec8b066e36783b2d
点击链接查看和 Kimi 的对话 https://www.kimi.com/share/19c09dc0-e472-8c82-8000-000037bb49cc
strlen和sizeof的全面对比
int 通常是4字节, double 是8字节,但 char 永远是1字节
strlen
返回值:字符个数不包括‘\0'
返回类型位size_t
size_t为无符号整型unsigned_int
长度为4
sizeof
返回值:字节数包括‘\0'
辨析
为什么25行里地址也可以为8个字节
1。数组类型不一样
这些是在64 位操作系统下
2.操作系统不一样
字符数组
sizeof计算
strlen(计算字符数组的长度)
用法:strlen(地址),直到遇到'\0'停止
没有'\0'
为什么第一个arr和第二个arr+0为随机值
字符串
sizeof计算字节数
strlen计算字符数
虽然 &arr 语法上类型不匹配( strlen 期望 char* ),但编译器会强制转换后使用。、
&arr 是"整个数组的地址",值等于首地址,但类型更"重",告诉编译器"我指向一个完整的数组"。
指向字符串的指针