数组_数组名_数组地址
来源:互联网 发布:windows策略管理 编辑:程序博客网 时间:2024/05/27 10:44
01.&数组名–数组名表示整个数组
这里取出的是整个数组的地址。
02.sizeof(数组名)–数组名表示整个数组
计算的是整个数组的大小,单位是字节。
除此之外,遇到的所有的数组名都表示数组首元素的地址!
//一维数组int a[] = {1,2,3,4};printf("%d\n",sizeof(a));//16
这里的数组名a表示整个数组,计算整个数组的大小,也就是4个整数,整型占4个字节,所以整个数组的大小是4*4=16个字节。
printf("%d\n",sizeof(a+0));//4
这里的地址表示数组首元素的地址,也就是1的地址,a+0还是数组首元素的地址,地址就是4个字节。
printf("%d\n",sizeof(*a)); //4 *a==*(a+0)==a[0]
这里的a表示数组首元素的地址,解引用就是数组首元素,而数组首元素的字节数就是4。
printf("%d\n",sizeof(a+1));//4
这里的a是数组首元素的地址,a+1表示第二个元素的地址,地址4个字节。
printf("%d\n",sizeof(a[1]));//4
a[1]表示数组第二个元素,字节数是4。
printf("%d\n",sizeof(&a)); //4
这里的a表示整个数组,取整个数组的地址,地址还是4个字节。
printf("%d\n",sizeof(*&a)); //16
&a表示取整个数组的地址,解引用为整个数组,整个数组的大小为16个字节。
printf("%d\n",sizeof(&a+1));//4
这里的a表示整个数组,&a表示取整个数组的地址,整个数组的地址+1,还是地址,字节数为4。
printf("%d\n",sizeof(&a[0]));//4
首元素的地址,4字节。
printf("%d\n",sizeof(&a[0]+1));//4
首元素地址+1,第二个元素的地址,4字节。
眼见为实:
//字符数组char arr[] = {'a','b','c','d','e','f'};printf("%d\n", strlen(arr));//随机值
这里的数组名arr表示数组首元素的地址,从首元素地址开始数,直到遇到‘’\0‘’结束,但是本数组中没有‘’\0‘’,所以就一直往后数,直到遇到‘’\0‘’为止,所以是随机值。
printf("%d\n", strlen(arr+0));//随机值
数组首元素的地址+0,还是数组首元素的地址,同上,随机值。
printf("%d\n", strlen(*arr));//error
数组首元素的地址解引用为数组首元素,而strlen( )括号里放的应该是地址,不是元素,所以代码本身错误。
printf("%d\n", strlen(arr[1]));//error
数组的第二个元素,不是地址,错误。
printf("%d\n", strlen(&arr));//随机值
取整个数组的地址,往后数,遇到‘’\0 ‘’为止,故为随机值。
printf("%d\n", strlen(&arr+1));//随机值
整个数组的地址+1,从f往后的地址开始数,也是随机值。这里的随机值应该是上一个随机值-6。
printf("%d\n", strlen(&arr[0]+1));//随机值
数组首元素的地址+1为数组第二个元素的地址,往后数,到‘’\0‘’为止,随机值,且为上上一个随机值-1。
眼见为实:
有错误的两个已屏蔽,其他都为随机值!
int a[3][4] = {0};printf("%d\n",sizeof(a));//48
计算整个数组的大小,共3*4=12个元素,每个元素4字节,共4*12=48字节。
printf("%d\n",sizeof(a[0][0]));//4
数组首元素,4个字节。
printf("%d\n",sizeof(a[0]));//16
这里的a[0]表示第一行的数组名,所以这里表示计算第一行数组的大小,为4*4=16字节。
printf("%d\n",sizeof(a[0]+1));//4
这里的a[0]是数组名,但是没有单独放在sizeof里,所以表示数组首元素的地址,+1则是第二个元素的地址,故为4字节。
printf("%d\n",sizeof(a+1));//4
a是二维数组的数组名,这里表示二维数组的首元素地址,+
1表示二维数组的第二个元素的地址,还是4字节。
printf("%d\n",sizeof(&a[0]+1));//4
二维数组第一行的地址+1,第二行的地址,4字节。
printf("%d\n",sizeof(*a));//16
a表示二维数组首元素的地址,解引用为二维数组首元素,即第一行的元素,故4*4=16字节。
printf("%d\n",sizeof(a[3]));//16
a[3]表示第4行数组的数组名,这里的数组名表示第4行整个数组,整个数组的大小4*4=16字节。
眼见为实:
注:sizeof()括号里的值不计算,不管值属性,只看类型属性,所以尽管没有第4行,但是可以判断出a[3]是数组名,表示整个数组,便可计算出其大小。
牢记:
&数组名–数组名表示整个数组
这里取出的是整个数组的地址。sizeof(数组名)–数组名表示整个数组
计算的是整个数组的大小,单位是字节。除此之外,遇到的所有的数组名都表示数组首元素的地址!
- 数组_数组名_数组地址
- c++_数组名与指针
- 数组名与数组地址
- 数组名和数组地址
- C语言,数组,数组名,数组地址
- 三:数组_遍历数组
- 集合_数组_字典
- 数组名与数组名的地址
- 数组名和数组名取地址
- 数组名VS数组名取地址
- 数组名和数组名取地址&
- 数组名和数组名取地址&
- 数组名和数组名取地址&
- 数组名和数组名取地址&
- 数组名和数组名取地址&
- 数组名与数组名的地址
- 数组名和数组名取地址&
- 数组名和数组名取地址&
- 由后序遍历和中序遍历建树
- 自顶向下,逐步求精
- Python爬虫之BeautifulSoup库函数解析
- (转)Deep Learning(深度学习)学习笔记整理系列之(八)
- 常用正则表达式
- 数组_数组名_数组地址
- 学以致用-使用Spotfire创建自己的简单知识库查询系统
- 【IPFS + 区块链 系列】 入门篇
- weMosD1--12864 OLED/I2C显示
- Spring Boot 热加载
- Android沉浸式(侵入式)标题栏(状态栏)Status(一)
- 【IPFS + 区块链 系列】 入门篇
- 深度学习之卷积神经网络CNN及tensorflow代码实现示例
- 码农和程序员之间的5个关键差异