免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 938 | 回复: 2
打印 上一主题 下一主题

关于结构的几个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-26 11:35 |只看该作者 |倒序浏览
定义了一个结构
struct A;
然后定义该结构的一个数组,A a[10];
然后我要将结构数组的每一位都置为0,我是该用
memset(a,sizeof(A)*10,0)
还是用
memset(&a,sizeof(A)*10,0)

我感觉是前者,可是看一个例子却是后者,我错了吗?

另外sizeof(A)*10
和sizeof(a)相等不?

sizeof是根据什么原理来计算大小的?它会将a识别成什么?仅仅是一个简单指针,所以sizeof(a)=4,还是能知道a是一大块内存区域的指针,因此sizeof(a)就是内存区的大小

论坛徽章:
0
2 [报告]
发表于 2004-09-26 12:27 |只看该作者

关于结构的几个问题

其实你上面的很多疑问,在你写程序验证之后很容易就得到答案。因此只解释两点:

1. 关于 a 和 &a 的问题。应该知道,对于数组来说,数组名就代表了数组的起始地址,所以 memset(a,sizeof(A)*10,0) 是正确的。其次,C标准规定了 &a 与 a 的含义是一样的,所以 memset(&a,sizeof(A)*10,0) 也是正确的。既然这样,建议你用前者,因为简单。

2. sizeof(a) 指的是 a 代表的类型在内存中占有的字节数。如果a 是这样定义的: A a[10];,则 a 的类型是 A[10],所以 sizeof(a) = sizeof(A) * 10;如果 int a[10];,a 的类型为 int[10], sizeof(a) = sizeof(int) * 10;如果 int a;,a 的类型为 int,sizeof(a) = sizeof(int),等等。

论坛徽章:
0
3 [报告]
发表于 2004-09-26 21:04 |只看该作者

关于结构的几个问题

thank u!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP