社区
C语言
帖子详情
如何用memset()对整数型的数组初始化?
lockhall
2007-02-04 01:15:16
#include <stdio.h>
#include <string.h>
int main()
{
int a[5];
int i;
memset(a,1,5*sizeof(int));
for(i = 0;i < 5;i++)
{
printf("%d\n",a[i]);
}
getch();
}
这种明显不可以,memset是按照字节初始化的,可我想对整数初始化,咋整?
...全文
703
11
打赏
收藏
如何用memset()对整数型的数组初始化?
#include #include int main() { int a[5]; int i; memset(a,1,5*sizeof(int)); for(i = 0;i < 5;i++) { printf("%d\n",a[i]); } getch(); } 这种明显不可以,memset是按照字节初始化的,可我想对整数初始化,咋整?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yexiaobiao2010
2010-05-04
打赏
举报
回复
如果改成定义字符数组就可以,具体代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char a[5];
int i;
memset(a,1,sizeof(a));
for(i=0; i<5; i++)
{
printf( "%d\n ",a[i]);
}
}
vcacm
2007-02-04
打赏
举报
回复
用位运算中的位段去实现呀!
GoAndSeek
2007-02-04
打赏
举报
回复
定义一个memset32
#define memset32(dst,val,count) \
__asm mov edi,dword ptr[dst] \
__asm mov eax,dword ptr[val] \
__asm mov ecx,dword ptr[count] \
__asm rep stosd
晨星
2007-02-04
打赏
举报
回复
哦,还有个限制:编译时能知道这个初始值(即你这里的“1”)。
晨星
2007-02-04
打赏
举报
回复
不过,如果你的数组的长度不长,而且编译时就能确定大小,也完全可以这样初始化:
int a[5] = {1, 1, 1, 1, 1};
lockhall
2007-02-04
打赏
举报
回复
看来走memset这条路不好使啊
blh
2007-02-04
打赏
举报
回复
for(i = 0;i < 5;i++)
{
a[i] = 1;
}
Estfania
2007-02-04
打赏
举报
回复
同意楼上
晨星
2007-02-04
打赏
举报
回复
不过既使是std::fill,也只不是是别人写好的库函数而已,其底层实现最终很可能仍然是靠for循环来实现的,所以其区别也仅有两点:(1)代码的风格,(2)谁实现(自己实现还是库作者实现)。
不像memset,可能从汇编级作过优化。
晨星
2007-02-04
打赏
举报
回复
哦,你想弄成4个1啊?
那除了自己写循环,C里可能没有办法了。C++中可以使用std::fill。
晨星
2007-02-04
打赏
举报
回复
没啥不可以,一般整数的0正好就是四个字节的0。
C语言中的
数组
和多维
数组
是什么?如何遍历
数组
并
初始化
?
声明和
初始化
多维
数组
的方式与一维
数组
类似,只需要指明
数组
的类型、名称和维度即可。这里声明了一个长度为10的整型
数组
,其中包含了10个元素,但是这些元素现在都是未
初始化
的,所以默认是0。这里先使用sizeof操作...
使用
memset
初始化
int
数组
memset
()是一个来自于string库的函数,正规用法是
初始化
char类型的
数组
。因为char类型只占1个字节,
memset
按字节赋值后,会将char类型
数组
的所有元素变为你指定的值。但是4字节的int类型在被
memset
赋值后,会被重复...
C++:
数组
初始化
常见错误之
memset
和 fill (fill_n)
memset
主要用于字符型
数组
的
初始化
,
整数型
数组
初始化
为0时可以用
memset
。
memset
在
初始化
动态
数组
时不能sizeof(
数组
名),而应该sizeof(元素)*元素个数。 fill (fill_n)是超级大法,万物皆可fill。 // 1. 字符...
memset
函数对
数组
进行
初始化
最大值及其误区【c语言】
/它将arr中的值全部赋为2139062143,这是用
memset
对int赋值所能达到的最大值;此外,对于double类型
数组
,127同样适用。平时看某个函数的时候,只看一半不看一半的,以为这个函数可以
初始化
任意值,导致wa声一片。...
memset
()函数用于字符型、整型
数组
的
初始化
详解
那么,
memset
函数是否不适用于所有int型
数组
的
初始化
?显然不是。在实际运用中,我们一般使用
memset
函数
初始化
int型
数组
为0、-1或无穷大
C语言
69,381
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章