memset以字节为单位操作
来源:互联网 发布:淘宝买东西扣了两次钱 编辑:程序博客网 时间:2024/05/13 01:20
把数组中的元素值都设置成字符1,
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cstring>
using
namespace
std;
int
main(){
char
a[5];
memset
(a,
'1'
,5);
for
(
int
i = 0;i < 5;i++)
cout<<a[i]<<
" "
;
system
(
"pause"
);
return
0;
}
而,如下程序想把数组中的元素值设置成1,却是不可行的
因为第一个程序的数组a是字符型的,字符型占据内存大小是1Byte,而memset函数也是以字节为单位进行赋值的,所以你输出没有问题。而第二个程序a是整型的,使用 memset还是按字节赋值,这样赋值完以后,每个数组元素的值实际上是0x01010101即十进制的16843009。
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cstring>
#include <windows.h>
using
namespace
std;
int
main()
{
int
a[5];
memset
(a,1,20);
//如果这里改成memset(a,1,5*sizeof(int))也不可以,因为memset按字节赋值。
for
(
int
i = 0;i < 5;i++)
cout<<a[i]<<
" "
;
system
(
"pause"
);
return
0;
}
这个错误严格来讲不能算用错memset,但是它经常在使用memset的场合出现
1
2
3
4
5
6
7
int
some_func(
struct
something *a)
{
…
…
memset
(a,0,
sizeof
(a));
…
}
这里错误的原因是VC函数传参过程中的指针降级,导致sizeof(a),返回的是一个 something*指针类型大小的的字节数,如果是32位,就是4字节。
- memset以字节为单位操作
- 以字节为单位显示变量的内存存储数据
- 以字节为单位显示变量的内存存储数据
- C标准库:以字节为单位的IO函数
- java 以字节为单位读取文件(2)
- java 实现以字节为单位读取文件(2)
- 以字节为单位显示变量的内存存储数据
- 读写文件1——以字节为单位,读写文件(笔记实例)
- Node.js通过write、read以字节为单位来写、读
- 以/为单位截取URL
- php转换字节数为其他单位
- 以单词为最小单位翻转字符串
- 以字符为单位的IO
- 以单词为单位的逆序算法
- 网站访问统计,以小时为单位
- crontab精确到以秒为单位
- 以单词为单位的翻转字符串
- 以单词为单位的翻转字符串
- HDU-1150 HK二分图最小点覆盖
- HDU-2389 Rain on your Parade 裸Hopcroft–Karp algorithm
- Linked List Cycle II
- HDU-2458 Kindergarten 最大完全子图(最大团)中顶点的个数
- Hopcroft-Karp算法 二分图最小路径覆盖
- memset以字节为单位操作
- 【装饰设计模式】写一个MyBufferedReader实现自己的ReadLine方法、增强BufferedReader的ReaderLine()
- HDU-4160 Doll 最小路径覆盖
- cf 359A 359B
- HDU-4160 Doll 匈牙利算法
- HDU-1045 Hopcroft-Karp算法
- MySql常用命令总结
- HDU-1533 KM Going Home 最佳匹配 最小费用最大流
- HDU-2255 奔小康赚大钱 裸KM