我有一个很大的阵列:
int* arr = new int[BIGNUMBER];
Run Code Online (Sandbox Code Playgroud)
如何用1号码快速填充它.通常我会这样做
for(int i = 0; i < BIGNUMBER; i++)
arr[i] = 1
Run Code Online (Sandbox Code Playgroud)
但我认为这需要很长时间.
我可以使用memcpy或类似吗?
可能重复:
如何在C中
初始化一个int初始化数组
我想知道初始化一个int数组只包含-1值的最快/最简单的方法.我需要的数组是90英特长,所以直截了当的方法应该像这样初始化它:
int array[90]={-1, -1, -1, ...};
Run Code Online (Sandbox Code Playgroud)
但我只想使用一次数组,所以我想能够动态地使用它,并且能够在程序中使用它后释放它,所以我更喜欢快速的方式calloc,但不是零,而是-1课程.
我是来自Java,而且我对Objective C很新.无论如何,我有这个静态方法,它旨在制作一个数组的副本 (如果有更好的方法来实现这一点,请告诉我,但我我更多地问这个问题,以便找出我为什么会遇到这个错误,以及如何在将来避免这样的错误.)我遇到了一些问题,但就在我认为我把它们全部整理好的时候,我得到了这个错误看起来像XCode http://i43.tinypic.com/35nal3n.png
这是界面中的方法:
+ (float[]) copyArray: (float[]) array withLength: (int) length;
Run Code Online (Sandbox Code Playgroud)
以下是实现中的方法:
+ (float[]) copyArray: (float[]) array withLength: (int) length
{
float copiedArray[length];
for (int i = 0; i < length; i++)
{
copiedArray[i] = array[i];
}
return copiedArray;
}
Run Code Online (Sandbox Code Playgroud) int letters[] = {['A'] = 4, ['B'] = 8, ['E'] = 3, ['I'] = 1, ['O'] = 0, ['S'] = 5};
Run Code Online (Sandbox Code Playgroud)
当我初始化上面的数组字母时,我的假设是在每个大写字母的索引处,该值将是数字,即if ['A'] = 4,然后在index处,'A'该值将为4,其余未初始化的值将默认为0 .
但是当我打印数组字母的所有值时,我得到这个输出:
00000000000000000000000000000000000000000000000000000000000000000480030001000000000514303876720941309621-1392458268143038767232767-197939865932767-1979398659327670010143038792832767
我不知道负数来自哪里.
我们知道 C++ 允许用零初始化 C 风格的数组:
int a[5] = {0};
// or
int a[5] = {};
Run Code Online (Sandbox Code Playgroud)
对于 std::array 也同样有效
std::array a<int, 5> = {};
Run Code Online (Sandbox Code Playgroud)
但是,这行不通:
int a[5] = {33}; // in memory( 33, 0, 0, 0, 0 )
std::array<int, 5> = {33}; // in memory( 33, 0, 0, 0, 0 )
Run Code Online (Sandbox Code Playgroud)
vector有没有办法在不使用or 的情况下用非零值初始化整个数组algorhtm?
也许constexpr可以帮忙?最好的解决方案是什么?
附:
GCC 提供了这种语法
int a[5] = {[0 ... 4] = 33};
Run Code Online (Sandbox Code Playgroud)
但我不确定它对于其他编译器是否有效。
让我们在C或C99中假设以下内容:
typedef struct
{
int x;
double y;
} MY_S;
MY_S a[666] = {333, 666.6};
Run Code Online (Sandbox Code Playgroud)
这是否仅初始化数组的第一个对象?如果是,是否有一种方法可以使用该语法将数组的所有元素初始化为所有相同的值(无需调用函数/循环,而无需重复初始化程序)?
有人能让我想起将C中的数组(特别是多维)分配给单个值的语法吗?
我相信这些波浪形的括号做了这个,虽然我在测试时遇到了编译器错误:
int ArrayName [5][5] = {1};
Run Code Online (Sandbox Code Playgroud)
将数组初始化为1.
为什么不int a[5] = {1,2,3,4,5,6}发出警告int a[5] = {1,2,3,4,5}; a[5] = 6;呢?
当我最初声明数组大小为5时,这样做是否是一个好习惯?
如果我不知道阵列的大小怎么办?我可以这样声明int a[]吗?
你好我是C编程语言的初学者,最近我开始学习数组,我研究过默认情况下int数组中的所有值都是垃圾.
那么为什么我在这两种情况下得到不同的价值观.
情况1
int arr[5];
Run Code Online (Sandbox Code Playgroud)
在这种情况下,从arr [0]到arr [4]我们将有垃圾值,但在下一种情况下.
案例2
int arr[5] = {1};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,arr [0]将具有值1,并且从arr [1]到arr [4]的剩余值将为0.
我的问题是,在case-1中,每个未初始化的阵列位置都有垃圾valeus,那么为什么在2-case剩余的未初始化阵列位置具有0作为默认值.
我需要对字符串进行一些操作(比如在某些地方添加字母).我不知道它的大小,取决于输入.
如何定义字符串而不指定其大小?我希望它适应我放在里面的任何内容.
为什么我不能只将空char *方法传递给方法?编译器不允许这样做.
根据答案,我明白我无法创建无限大小的字符串.但是,例如,当我尝试创建char arr[100]并且我的字符串的长度只有8个字符时,当我打印时,arr我得到了更多的字母然后我想要.其中一些甚至不是字符串的一部分.怎么可能?