sizeof一维数组和二维数组

sizeof一维数组和二维数组

ID:38119775

大小:52.50 KB

页数:4页

时间:2019-05-26

sizeof一维数组和二维数组_第1页
sizeof一维数组和二维数组_第2页
sizeof一维数组和二维数组_第3页
sizeof一维数组和二维数组_第4页
资源描述:

《sizeof一维数组和二维数组》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、sizeof一维数组和二维数组1.sizeof的说明sizeof在C语言里面属于操作符,不属于函数,和变量的++,--属于同样的操作符。sizeof后面的括号里面,可以放类型名,数组名等内存大小确定的类型,不能计算函数名,可变数组的内存大小等2.sizeof计算一维数组首先,看如下代码:#includeintmain(){inta[]={1,2,3,4};/*打印内存地址*/printf("0x%x,0x%x,0x%x,0x%x",a,&a,a+0,&a[0]);/*计算内存大小*/printf("%d,%

2、d,%d,%d",sizeof(a),sizeof(&a),sizeof(a+0),sizeof(&a[0]));return0;}我们知道,a代表数组的起始地址,也就是数组a的0号位元素的内存起始地址,a+0代表指针a偏移0,因此指向的还是数组的起始地址,所以a=&a=a+0=&a[0],虽然他们的数值相等,都表示数组起始地址,但他们的意义不同。数组名a代表数组起始地址,如果它参与指针偏移运算,那么它就代表一个指向某一位元素的指针(看本文章最后的总结,数组名参与偏移运算,退化为指针),例如a+0代表指向数组0号位元素的指针

3、,因此它的内存大小为4。数组元素a[0]和*(a+0)表示的意义相同,访问a[0],就是从数组首地址开始偏移0,然后再访问内存中的数值,所以,&a[0]就是&(*(a+0)),&和*抵消,为a+0,代表指向数组0号位元素的指针,内存大小为4。经过上面的分析,就可以理解代码的运行结果,已经在windowsXP,vc6.0下编译链接过:3.sizeof计算二维数组首先,看如下代码:#include#includeintmain(){inta[3][4]={1,3,5,7,9,11,13,15,1

4、7,19,21,23};intn=sizeof(a[0][0]);printf("a=0x%x,*a=0x%x",a,*a);printf("asize=%d,*asize=%d",sizeof(a),sizeof(*a));printf("-------------------------------------------");printf("a[0]=0x%x,*(a+0)=0x%x",a[0],*(a+0));printf("a[0]size=%d,*(a+0)=%d",sizeof(a[0]),si

5、zeof(*(a+0)));printf("-------------------------------------------");printf("&a[0]=0x%x,&a[0][0]=0x%x",&a[0],&a[0][0]);printf("&a[0]size=%d,&a[0][0]size=%d",sizeof(&a[0]),sizeof(&a[0][0]));printf("-------------------------------------------");printf("a[1]=0x%x

6、,a+1=0x%x",a[1],a+1);printf("a[1]size=%d,a+1=%d",sizeof(a[1]),sizeof(a+1));printf("-------------------------------------------");printf("&a[1][0]=0x%x,*(a+1)+0=0x%x",&a[1][0],*(a+1)+0);printf("&a[1][0]size=%d,*(a+1)+0size=%d",sizeof(&a[1][0]),sizeof(*(a+1)+

7、0));printf("-------------------------------------------");printf("a[2]=0x%x,*(a+2)=0x%x",a[2],*(a+2));printf("a[2]size=%d,*(a+2)size=%d",sizeof(a[2]),sizeof(*(a+2)));printf("-------------------------------------------");printf("&a[2]=0x%x,a+2=0x%x",&a[2],a+

8、2);printf("&a[2]size=%d,a+2size=%d",sizeof(&a[2]),sizeof(a+2));printf("-------------------------------------------");printf("a[

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。