用memset(void* buffer, int val, size_t size) 可将buffer开始的前size个字节,
每个字节全部置为val;
经常用于将数组清零;memset(buffer,0,size);
但是如果要将 int buffer[10]; 中每个元素全部置为10,
memset(buffer, 10, sizeof(int)*10); 是行不通的.
看以下代码:
- #include<iostream>
- #include<bitset>
- #include<cmath>
- using namespace std;
- int main()
- {
- int val = 0;
- memset(&val, 10, sizeof(int));
- cout<<"val = "<<val<<endl;
- /*memset 工作原理 :
- 每次将10拷贝到&val里的一个字节中,即一次拷贝8位;
- 所以10的低八位为0000 1010 ,在&val 里就是 0000 1010 0000 1010 0000 1010 0000 1010
- = 168 43 0090 */
- bitset<32> bry(val);
- cout<<"binary("<<val<<") = "<<bry<<endl;
- system("pause");
- return 0;
- }
转载于:https://blog.51cto.com/hustluy/425990