memset()无法按预期工作
memset() does not work as expected
我对以下代码感到困惑:
#include<iostream>
#include<cstring>
int main()
{
int arr[3][4];
memset(arr, 10, sizeof(arr));
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 4; ++j)
std::cout<<arr[i][j]<<" ";
std::cout<<"n";
}
return 0;
}
输出:
168430090 168430090 168430090 168430090
168430090 168430090 168430090 168430090
168430090 168430090 168430090 168430090
我原以为运行上面的代码会打印
10 10 10 10
10 10 10 10
10 10 10 10
有人能解释一下这种奇怪行为的原因吗?
因为int
的长度超过一个字节。memset()
用给定的值填充每个字节。所以,你的4字节int中的每一个字节都包含一个10。
memset将把传递的内存视为指向字节的指针。每个字节将设置为10,而不是每个整数
因此,您为每个int打印0x0a0a0a0a或168430090。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- C++中的memset函数工作不正常
- memset() 在 c++ 中的工作原理
- memset()无法按预期工作
- memset在这段代码中是如何工作的
- c++ memset()在main函数内外的工作方式不同
- memset是如何工作的?