相关疑难解决方法(0)

int array [30] = {0}; 这在c中是如何工作的?

这是如何工作的(将所有值设置为0)?

int array[28]= {0};
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用(不将所有值设置为4,但只将第一个值设置为4,其他值设置为0)?

int array[28]= {4};
Run Code Online (Sandbox Code Playgroud)

c arrays initialization

4
推荐指数
2
解决办法
353
查看次数

C和C++中的初始化列表

出于某种原因,我有这样的想法,C和C++的工作原理如下:

int foo[10] = {57};
for (int i=0; i<10; ++i)
    assert (foo[i] == 57);
Run Code Online (Sandbox Code Playgroud)

原来剩下的整数被初始化为0而不是57.我从哪里得到这个想法?这一点是真的吗?结构初始化列表是否真的如此?当分配给= {}和= {0}时,数组和结构是否整齐且正确地开始将自己初始化为0值?除非明确说明,否则我一直认为他们会初始化为垃圾.

c c++ initializer-list

3
推荐指数
1
解决办法
484
查看次数

C中= {0}的长版本是什么?

我被问到这个问题:

= { 0 } 是什么更长的代码的"捷径"?

因此,经过我的C书的多次搜索和搜索后,我知道它对聚合初始化所做的一切,但如果我想编写这段代码的较长版本会怎样.以下是程序中的实际代码以防万一

static char vid[25][100] = { 0 } ;
Run Code Online (Sandbox Code Playgroud)

c

3
推荐指数
2
解决办法
214
查看次数

数组初始化C.

这个初始化是什么意思:

char arr[10] = { 0, };
Run Code Online (Sandbox Code Playgroud)

我很熟悉char arr[10] = {0};将所有元素设置为零,并将char arr[10] = {1,2};前两个元素设置为1和2(ascii),其余元素设置为0.我不熟悉上面的格式.快速测试显示它可能就像char arr[10] = {0};,但还有其他含义我不知道吗?

c arrays

3
推荐指数
2
解决办法
6035
查看次数

在C中初始化"眼睛"(标识)矩阵数组

int eye[3][3] = {
  { 1,0,0 },
  { 0,1,0 },
  { 0,0,1 }
};
Run Code Online (Sandbox Code Playgroud)

是否有更短的方式来初始化它?它是如此规则,必须有一个更聪明的方式来初始化它,特别是如果它超过3x3,比如10x10或更多.

c

3
推荐指数
2
解决办法
788
查看次数

清除char数组最佳方案 - memset与否?

在我目前的代码中,我有类似的东西

while(true) //Infinite loop
{
   char buff[60];
   .....
   ....
}
Run Code Online (Sandbox Code Playgroud)

我想知道什么是更好的性能明智.

  1. 在进入无限循环然后使用memset(buff, 0, 60);或之前声明char buff(将包含包含换行符和换行符的字符串)
  2. 保持原样.memset会影响性能吗?

注意:

我的要求是char每次循环重启时我都需要让数组完全干净.

c++ memset

3
推荐指数
1
解决办法
2649
查看次数

将数组的所有元素初始化为0

在C语言中,我正在创建一个数组(2维),其中所有元素都是零

我这样做的方式如下:

int a[5][5],i,j;  //a is the required array
for(i=0;i<5;i++)
   for(j=0;j<5;j++)
       a[i][j]=0;
Run Code Online (Sandbox Code Playgroud)

我也知道其他一些方式:

int a[5][5]={0};
Run Code Online (Sandbox Code Playgroud)

两者都相同或有什么区别?

什么应该是首选?

谢谢 !

c arrays

3
推荐指数
2
解决办法
148
查看次数

为什么我会收到警告:(接近初始化'ptr')和运行时的分段错误,当指针上有值时?

这是以下代码:当我尝试访问数组的第一个值时,为什么它会给出分段错误?这些警告是什么?

#include<stdio.h>
int main(void)
{
    int *ptr = {1,2,3,4,5};//Is it not similar to char *ptr="Stackoverflow"?
    printf("%d\n",*ptr);// why Segmentation fault(core dumped) instead of 1
    return 0;
}

...
output:

warning: initialization makes pointer from integer without a cast [enabled by default] 
int *ptr = {1,2,3,4,5};
^

warning: (near initialization for ‘ptr’) [enabled by default]
warning: excess elements in scalar initializer [enabled by default]
warning: (near initialization for ‘ptr’) [enabled by default]
warning: excess elements in scalar initializer [enabled by default]
warning: …
Run Code Online (Sandbox Code Playgroud)

c arrays pointers initialization

3
推荐指数
1
解决办法
3140
查看次数

在C中初始化数组

在C中,我已经读过,半初始化的数组将用其余元素填充零(不管整数或char数组).

例如:

int arr[10] = {3};
Run Code Online (Sandbox Code Playgroud)

arr[4] 如果初始化则为0,如果未初始化则为垃圾值.

我的问题是,根据编译器选项,上述所有C编译器(或)的附加工作是否可能会发生或不发生?我在Code composer studio(TI的IDE)工作.我想确保这适用于所有案例和所有编译器.

c arrays embedded

2
推荐指数
3
解决办法
3736
查看次数

将数组初始化为0的正确和最简单的语法方法

我试图找出将数组初始化为全零的正确方法(即好像你已经在数组上做了一个memset).

我在堆栈溢出(和其他来源)的各个方面找到了以下方法:

char myArray1[10] = {0};
char myArray2[10] = {0,};
char myArray3[10] = {[0 ... 9] = 0};
char myArray4[10] = {0,0,0,0,0,0,0,0,0,0};
Run Code Online (Sandbox Code Playgroud)

我更喜欢最简单的语法变体......我使用的是{0},但我没有找到任何证明这实际上是正确的.

c++ arrays

2
推荐指数
1
解决办法
299
查看次数

标签 统计

c ×8

arrays ×6

c++ ×3

initialization ×2

embedded ×1

initializer-list ×1

memset ×1

pointers ×1