c++ - 哪个是初始化数组、“memset”或“{//value}”的最佳方法?
问题描述
int main(){
int ar[50]={1};
//OR
int br[50];
memset(br, 1, sizeof(br));
return 0;
}
解决方案
假设你这样做
int ar[50] = {-1};
现在你会期望这条线用 -1 初始化所有的数组元素,但它不会。它只会将数组的第一个元素设置为 -1 并将其余元素设置为 0。而 memset 将显示预期的行为。
在 C++ 中看到将数组的所有元素初始化为一个默认值吗?了解更多信息。
让我们举个例子:-
int arr[5] = { 1, 2 }; // this will initialize to 1,2,0,0,0
int ar[5] = { }; // this will initialize all elements 0
int myArray[10] = {}; // his will also all elements 0 in C++ not in c
因此,如果要将特定值初始化为数组,请使用 memset()。
如果要将数组中的所有元素初始化为 0,请使用
static int myArray[10]; // all elements 0
因为如果没有指定初始化器,具有静态存储持续时间的对象将初始化为 0,并且它比 memset() 更便携。
此外, Theint ar[50]={0};
将是无限的,因为它只是初始化数组并且没有结尾,但memset(arr,0,sizeof(br))
它具有结束数组中循环的正确方法
推荐阅读
- java - 将 spring boot 从 1.3.5 更新到 1.5.17 后找不到 log4j 库
- ms-access - 在 Access 报告中显示链接的图像
- lua - 使用 Lua 在一行中读取多个值
- javascript - 使用Javascript的简单数字猜谜游戏
- javascript - 使用 javascript 使输入类型 = 文本禁用或只读
- angular - 如何在工具栏之间使用 mat-elevation-z?
- c# - XML to LINQ - 获取按另一个元素的值排序的节点值集合
- java - 你能只列出不透明的谷歌日历事件吗
- ios - iOS 13:调整 UITabBar 高度不起作用
- java - 如何将地图转换为对象?