memset(a,1,sizeof用法(a))的用法

其他回答(3)
1、理解memset的定义:对指定地址下的连续n个单元设置为指定的初始值。
a. 指定地址:第一个参数,说明要处理的数据空间起始地址
b. n个单元:有几个意思,单元是指针的数据类型,n一般的是指空间大小(元素数量)。此外,n个单元的值不是n,而是n倍数据单元大小(元素大小),亦即实际的字节空间。
c.&初始值:是基于单元的初始值,不是基于字节的初始值。
2、理解sizeof:返回的是a这个对象的元素的大小(a是数组,如果是类、结构则是实际大小)。这也是你的问题,只是初始化了第一个单元,具体解决方案1楼有给出。
3、注意n个单元的关键性,如果不超出a的空间范围,则问题不大(只是未完全初始化),如果超出,则将导致系统崩溃!这个也是为什么C/C++程序编写的难点。好在,现在的某些编译系统能做简单的检测(但不能抱这个希望)
收获园豆:25
园豆:5720
一个整形数组还new,new了也不delete。
因为sizeof(x)给出的是x类型的大小,&char* a,a 是个指针类型,所以sizeof(a)是指针大小。
清除回答草稿
&&&您需要以后才能回答,未注册用户请先。memset(num,0,sizeof(num));什么意思_百度知道
memset(num,0,sizeof(num));什么意思
我有更好的答案
memset是个函数,它在string.h头文件中有声明。它有三个参数,一是所要set的首地址,二是set的值,三是set的字节数,num肯定是个数组,因为数组在传参时能自动转成指向数组的首元素的指针,如果不是数组,应该写成memset(&num, 0, sizeof(num));
采纳率:71%
将num中的成员全都初始化为0
本回答被提问者采纳
以num为首地址,长度为sizeof(num)的内存段被置为0
为num设置sizeof(num)个‘0’字符
还是不知道
其他1条回答
为您推荐:
其他类似问题
memset的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。生命可以随心所欲,但不能随波逐流。
关于使用memset(a,0xff,sizeof(a)),输出-1的问题
首先先要了解memset函数的功能:
将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,其返回值为指向S的指针。
它是以字节进行赋值的,具体可以看这段代码:
#include&stdio.h&
#include&string.h&
int main()
int s[50];
memset(s,0x1f,sizeof(s));
for(int i=0;i&5;i++)
printf("%d\n",s[i]);
这个结果输出的是一个较大的数,这个因为它是以字节进行赋值的,它将int所占的四个字节的每一个字节都赋成了0x1f,如果赋值过程中要赋值的哪个数超过了255,会屏蔽掉前面的的数字,只取一个字节的长度的数,即8个bite位,这个可以查看下面这个代码:
#include&stdio.h&
#include&string.h&
#define inf 0xff
int main()
int s[50];
memset(s,0x1f,sizeof(s));
for(int i=0;i&5;i++)
printf("%d\n",s[i]);
memset(s,0x1f1f1f1f,sizeof(s));
for(int i=0;i&5;i++)
printf("%d\n",s[i]);
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!memset(a,-1,sizeof(a));
// INTmemset.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include &string.h&
int main(int argc, char* argv[])
int a[10];
memset(a,-1,sizeof(a));
for(int i=0;i&10;i++)
printf("%3d ",a[i]);
printf("\n");
memset(a,0,sizeof(a));
for( i=0;i&10;i++)
printf("%3d ",a[i]);
printf("\n");
Press any key to continue
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!关于memset()的用法,举个例子顺便,问个问题【easyx吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:8,362贴子:
关于memset()的用法,举个例子顺便,问个问题收藏
a[12];memset(a,1,sizeof(a)); printf("%d",a[1]);这段代码的意思是把a数组的前24个字节都设置为1.每个short占了两个字节,所以每个字节的最末位都便称了 "1 ",高位变成了 "0 ",而两个字节才表示一个short,所以两个字节组合起来的short就是
,这个值表示成10进制就是 "257 ".
上面的例子是容易出错的地方。问一个问题:
我现在养成了了个习惯,只要是字符数组,使用前都要用memset()初始化一下,
不知道这样好不好
群里的大神能不能总结一下,那些情况下要用memset初始化数组? 谢谢了
没有什么是必须的,根据情况选择调用还是不调用就好了。
登录百度帐号}

我要回帖

更多关于 c语言sizeof用法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信