memset()函数

#include <iostream.h> 

int main() 

{ 

int B[10]; 

memset(B , 1 , sizeof(B)); 

for(int i = 0 ; i < 10 ; i++) 

cout << B[i] << endl; 

system("pause"); 

return 0; 

} 



memset();将每一字节的最后一位变成1 

结果全为168430009 

要怎么使结果为1啊

问题补充:我不想把它改为char类的 

要怎么办啊
答:
每个int型为4BYTE,因此你memset(B , 1 , sizeof(B)); 意思是从B开始,然后往下10个int型的长度的字节都付给01。你的执行结果是从B(0x0013FF58)指向的内存开始: 

0013FF58 01 01 01 01 01 01 01 01 ........ 

0013FF60 01 01 01 01 01 01 01 01 ........ 

0013FF68 01 01 01 01 01 01 01 01 ........ 

0013FF70 01 01 01 01 01 01 01 01 ........ 

0013FF78 01 01 01 01 01 01 01 01 ........ 

一个01是一个字节。B[i] == 0x01010101。转换为10进制是16843000。 

用memset希望输出全1.可以这样(vc6中实现): 

#include <iostream.h> 

#include <memory.h> 

int main() 

{ 



char B[10]; 

memset(B , 49, sizeof(B)); 

for(int i = 0 ; i < 10 ; i++) 

cout <<B[i]<< endl; 



//system("pause"); 

return 0; 



} 

直接用memset不是很好弄。你可以把char再转换为int。这种数组赋值直接用for就好了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值