精华内容
下载资源
问答
  • C 数组初始化

    2019-07-16 13:59:59
    https://www.w3cschool.cn/c/c-arrays.html double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

    https://www.w3cschool.cn/c/c-arrays.html
    double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

    展开全文
  • C++/C 数组初始化问题

    2017-09-25 21:59:43
    只有全局数组才会默认初始化为0, auto数组的值如果在定义时做了初始化,那么紧随其后的值都为0,如果定义时没有做初始化工作,那么其后的值是随机的。

              只有全局数组才会默认初始化为0,  auto数组的值如果在定义时做了初始化,那么紧随其后的值都为0,如果定义时没有做初始化工作,那么其后的值是随机的。


    展开全文
  • C数组初始化问题

    2017-11-18 15:35:26
    C语言数组如果没有初始化,对数组中元素都没有赋值,输出的是垃圾数值; 如果对数组任意元素赋值,那么数组的其它元素就会被赋值为 0 对不对?
  • object c 数组初始化

    千次阅读 2013-06-25 10:06:17
    当你用这个初始化函数时,把你要存储的对象一个一个传递进去。最后用一个 nil 符号结束这个列表以通知运行时列表什么时候结束。如果你不这么做, LLVM 编译器会抛出一个如下的异常: warning: Semantic Issue: ...

    -(void)initArray

    {

        NSString *strMsg =@"hello world!!!";

       NSNumber *class1 = [NSNumbernumberWithInteger:-345];

       NSNumber *class2 = [NSNumbernumberWithFloat:234.5];

        

       NSArray *myArray =[[NSArrayalloc]initWithObjects:

                           strMsg,

                           class1,

                           class2,

                          nil];

       NSLog(@"myArray=%@",myArray);

    }


    你可以看到,我们用initWithObjects:来初始化array。当你用这个初始化函数时,把你要存储的对象一个一个传递进去。最后用一个nil符号结束这个列表以通知运行时列表什么时候结束。如果你不这么做,LLVM编译器会抛出一个如下的异常:
    warning: Semantic Issue: Missing sentinel in method dispatch 

    我们也可以用NSArray类的 arrayWithObjects:方法来创建一个可自动释放的数组。像这样: 


    NSArray *array = [NSArrayarrayWithObjects:stringObject,
    signedNumber,
    unsignedNumber, nil]; 


    NSUInteger counter = 0;for (counter = 0;

    counter< [array count];
    counter++){
    id object = [array objectAtIndex:counter];NSLog(@"Object = %@", object);
    }



    NSString *stringObject = @"My String";
    NSNumber *signedNumber = [NSNumbernumberWithInteger:-123];

    NSNumber *unsignedNumber = [NSNumber numberWithUnsignedInteger:123];

    NSArray *anotherArray = [[NSArrayalloc] initWithObjects:
    @"String 1",
    @"String 2",
    @"String 3", nil];
    NSMutableArray *array = [[NSMutableArrayalloc] initWithObjects:stringObject,
    signedNumber, nil];
    [array addObject:unsignedNumber];

    [array removeObject:signedNumber];

    [array addObjectsFromArray:anotherArray];

    for (id object in array){
    NSLog(@"Object = %@", object);
    }



    展开全文
  • 背景C89标准规定初始化语句的元素以固定顺序出现,该顺序即待初始化数组或结构体元素的定义顺序。C99标准新增指定初始化(Designated Initializer),即可按照任意顺序对数组某些...1数组初始化数组初始化列表中使...

    背景

    C89标准规定初始化语句的元素以固定顺序出现,该顺序即待初始化数组或结构体元素的定义顺序。

    C99标准新增指定初始化(Designated Initializer),即可按照任意顺序对数组某些元素或结构体某些成员进行选择性初始化,只需指明它们所对应的数组下标或结构体成员名。GNU C将其作为C89模式的扩展。

    借助指定初始化特性,可实现数组或结构体元素的快速初始化。

    1数组初始化

    在数组初始化列表中使用“[index常量表达式]=value”形式可对index所指定的某个元素进行初始化。如:

    int arr[6] = { [0]=5, [1]=6, [3] =10, [4]=11 }; 或

    int arr[6] = { [0]=5, 6, [3] =10, 11 }; 或

    int arr[6] = { [3] =10, 11, [0]=5, 6 }; (指定顺序可变)

    均等效于:int arr[6] = {5, 6, 0, 10, 11, 0};

    说明:

    1) 若在某个指定初始化项目后跟有不至一个值,如[3]=10,11。则多出的数值用于对后续的数组元素进行初始化,即数值11用来初始化arr[4]。

    2) C数组初始化一个或多个元素后,未初始化的元素将被自动地初始化为0或NULL(针对指针变量)。未经过任何初始化的数组,所有元素的值都是不确定的。

    当下标是字符或属于枚举类型时,标识数组初始化语句的元素特别有用。如:

    int whitespace[256] = {

    [' '] = 1, ['\t'] = 1, ['\h'] = 1,

    ['\f'] = 1, ['\n'] = 1, ['\r'] = 1 };

    static const char* gMsgName[] = {

    [MSG_CREATE] = "Create",

    [MSG_DELETE] = "Delete",

    [MSG_SET]    = "Set",

    [MSG_GET]    = "Get",

    [MSG_GET_ALARMS] = "GetAlarms",

    [MSG_SET_TABLE]  = "SetTable"}; //枚举值变化时,数组自动同步更新

    这种初始化方式可实现简化的映射表,不过在下标指示符跨度较大时稍显浪费内存。

    GNU C还支持”[first … last]=value”(…两侧有空格)的形式,将该范围内的若干元素初始化为相同值。如:

    int arr[]={ [0 ... 3]=1, [4 ... 5]=2, [6 ... 9] =3}; 或

    int arr[]={ [0 ... 3]=1, [4 ... 5]=2, [6 ... 8] =3, [9] =3};

    均等效于:int arr[10] = {1, 1, 1, 1, 2, 2, 3, 3, 3, 3};

    注意,数组长度为指定的最大下标值加1。

    这种初始化方式比memset高效且用途更广,如:

    int arr[]={ [0 ... 127]=-1 };

    等效于:memset(arr, 0xFF, sizeof(arr));

    int arr[]={ [0 ... 127]=1 };

    不等效于:memset(arr, 1, sizeof(arr));

    2结构体初始化

    结构的指定初始化语法与数组类似,只不过使用点运算符和成员名(而不是方括号和索引值)标识具体的元素。例如,对于结构体

    struct Structure{ int a; int b; };或struct Structure{ int a, b; };

    有以下几种初始化方式:

    struct Structure tStct = {

    .a = 1,

    .b = 2

    };

    用“.fieldname=”指定待初始化成员名(成员初始化顺序可变)

    struct Structure tStct = {

    a : 1,

    b : 2

    };

    用“fieldname:”指定待初始化成员名(成员初始化顺序可变)

    GCC 2.5已废除,但仍接受

    struct Structure tStct = { 1, 2};

    内核结构体多采用第一种初始化方式,如Linux-2.6.x/drivers/usb/storage/usb.c设备驱动程序中:

    static struct usb_driver usb_storage_driver = {

    .owner = THIS_MODULE,

    .name = "usb-storage",

    .probe = storage_probe,

    .disconnect = storage_disconnect,

    .id_table = storage_usb_ids,

    };

    该方式初始化时不必严格按照定义时的顺序,灵活性很高。

    【例】定义如下结构体

    struct book{

    char title[MAXTITL];

    char author[MAXAUTL];

    float value;

    int mask[128];

    };

    可按照任意顺序使用指定初始化项目:

    struct book gift = { .value = 25.99,

    .author = "James Broadfool",

    .title = "Rue for the Toad",

    .mask[0 ... 127] = -1};

    也可只初始化结构体成员value:

    struct book surprise = { .value = 10.99 };

    正如数组一样,跟在指定初始化项目后且没有指示符(“[index]”或“fieldname”)的常规初始化项目为跟在指定成员后定义的下个成员提供初始值。此外,若对特定成员初始化多次,则最后一次赋值是它实际获得的值。

    考虑下列声明:

    struct book gift = { .value = 18.90,

    .author = "Philionna pestle",

    0.25};

    将把值0.25赋给成员value,因为它在结构体定义中紧跟在author成员之后。新值0.25覆盖前值18.90。

    若覆盖初始化有副作用(如类型不兼容),则GNU C可能会产生编译警告。

    利用指定初始化特性,可方便地编写如下的测试例程:

    AGENT_PW_PSN tPwPsn = {

    .dwSlotNo = 2,

    .dwPortNo = dwPortNo,

    .dwPsnType = TRANS_MPLS,

    .dwInBndLable = dwInBndLable,

    .dwOutBndLable = dwOutBndLable,

    .dwMplsType = MPLS_SINGLE_LABELLED,

    .dwInBndTunnelLable = 0,

    .dwOutBndTunnelLable = 0,

    .aucDstMac = {0x00,0x15,0xeb,0x72,0x00,0x0e},

    .dwVlanId = 300,

    .dwPriority = 7

    };

    OmciSetPwPsn(&tPwPsn, sizeof(tPwPsn), aucBufOut, &dwOutLen);

    3联合体初始化

    可用“.fieldname” (或已废弃的“fieldname:”)指示符来指定使用联合体的哪个元素,如:

    union UnionT { int i; double d; };

    union UnionT tUnion = { .d = 4 };

    使用第二个元素将4转换为double类型存入联合体。相反,将4转换为union UnionT类型则会把它作为整数i存入联合体。

    4结构体数组初始化

    可在“=”前写上一系列的“[index]”和“.fieldname”指示符来指定待初始化的嵌套子对象,如:

    struct Structure ptStct[10] = {

    [2].b = 0x2B, [2].a = 0x2A,

    [0].a = 0x0A };

    5 GCC扩展结构体赋值

    对于上文定义的结构体Structure可整体赋值:

    struct Structure tStct1, tStct2;

    tStct2 = tStct1;

    结构体也可作为函数返回值对另一个结构体赋值:

    struct Structure func1();

    struct Structure tStct = func1();

    展开全文
  • 看到C++将数组初始化为全0的这个用法: int a[100] = {0};// 初始化一个全0的数组 ...究其原因,正如C/C++ int数组初始化中所述,数组初始化列表中的元素个数小于指定的数组长度时,不足的元素补以默认值...
  • #include <string.h>///memset需要头文件<string.h>(c语言) 或 <cstring>(c++语言) struct node { int w1, w2, w3;...///结构体数组可以直接memset初始化 return 0; } ...
  • C/C++数组初始化的总结

    万次阅读 多人点赞 2018-12-11 16:19:15
    数组初始化的几种形式 数组初始化为某一固定值 memset(数组名,值,sizeof(数组名)) fill(begin(),end(),value) 以前刚开始学数组初始化,一直都没搞太清楚,包括参加PAT考试,直到看了胡凡的《算法笔记》,逐渐...
  • 一、每天一点C / 一维数组初始化正文目录:1.用以逗号分隔的值列表来初始化数组2.把数组设置为只读3.忘记初始化数组4.部分初始化数组5.让编译器自动推导数组大小6.指定初始化器(designatedinitializer)运行环境:...
  • 首先因为数组初始化要使用的时候必须确定数组的长度,也就是说数组的长度是不可变的。在JAVA中创建数组有两种方式 :(1)静态创建 如Object[] arr1 = {"a","b","c"};(2)动态创建 如1Object[] arr3 = new Object[]{"a...
  • DATE: 2020.11.23 文章目录1、参考2、结构体数组初始化 1、参考 Problems Initializing Structures 2、结构体数组初始化
  • C#数组初始化简析

    2020-09-05 17:46:33
    C#数组与其它C系列语言有着很多的不同,以前接触的时候理解出现很大的偏差。尤其是对多维数组的认识,本文将详细介绍C#数组初始化,需要的朋友可以参考下
  • Linux GNU C结构体数组初始化示例

    千次阅读 2016-10-13 12:58:56
    GCC特有的数组初始化的风格: // 数组赋值另一种方式,但只在gcc下编译通过,g++不能 enum { AAA = 0, BBB, CCC, DDD, }; // 只对感兴趣的索引值进行赋值,而不管下标的顺序 static const int regs[] = { ...
  • java数组 初始化 具有使用C或FORTRAN等语言进行编程的经验的人熟悉数组的概念。 它们基本上是一个连续的内存块,每个位置都是某种类型:整数,浮点数或您所拥有的。 Java中的情况与此类似,但有一些额外的折痕。 ...
  • C 语言数组初始化

    2016-07-15 23:13:01
    如果初始化时指定的的元素个数比数组大小少,剩下的元素都回被初始化为 0。例如 int v5[8]={1,2,3,4}; 等价于 int v5[8]={1,2,3,4,0,0,0,0}; 如果不对数组进行初始化,即在定义的同时没有用列表初始化,那么局部...
  • C/C++数组初始化

    2020-09-06 13:07:44
    1、整型数组初始化-栈初始化 //默认初始化 int a[5] = {}; //[0, 0, 0, 0, 0] //全部初始化为0 int a[5] = {0}; //[0, 0, 0, 0, 0] //c++11新写法 int a[5]{}; //[0, 0, 0, 0, 0] 2、字符串的初始化-栈初始化 ...
  • 数组初始化

    2019-03-07 19:34:57
    数组初始化 全局数组默认初始化为0, auto数组的值如果在定义时做了初始化,那么紧随其后的值都为0, 如果定义时没有做初始化工作,那么其后的值是随机的. 如下: #include int a[2]; //全局数组都是0 int main() { ...
  • Verilog中的二维数组Verilog中提供了两维数组来帮助我们建立内存的行为模型。具体来说,就是可以将内存宣称为一个reg类型的数组,这个数组中的任何一个单元都可以通过一个下标去访问。这样的数组的定义方式如下:reg...
  • C/C++ int数组初始化

    万次阅读 2019-01-19 14:21:02
    C/C++初始化 静态数组 int array[100]; //定义了数组array,但并未对数组初始化; 静态数组 int array[100] = {0}; //定义了数组array,并将数组元素全部初始化为0; 静态数组 int array[100] = {1}; //定义了...
  • 哈喽C数组初始化

    2019-01-20 22:32:37
    初始化格式: 数据类型 数组名[常量表达式]={初值表} (1)如果对数组的全部元素赋以初值,定义时可以不指定数组长度(系统根据初值个数自动确定)。如果被定义数组的长度,与初值个数不同,则数组长度不能省略。 ...
  • c++数组初始化

    2021-04-27 10:47:52
    c++数组初始化写法 1.buf[size] = {0}; char buf[4] = {0}; 上述代码执行以后,整个buf都初始化为0,跟我们大部分人的预想是一样。 2.buf[size] = {value}; // value != 0 char buf[4] = {1}; 上述代码执行...
  • C++ 数组初始化与指针

    2019-06-07 00:25:00
    参考链接:C/C++数组初始化的一些误区 1. 很容易出现的误区: int a[5] = { 0 }; // 全部初始化为0int a[5] = { 1 }; // 我想全部初始化为1 上面初始化 1 的作法将会产生错误,而且你很可能想当然这么以为...
  • c++用数组初始化向量In this article, we’ll take a look at some of the ways to initialize a vector in C++. There are a bunch of ways to do this, so we’ll go through each approach. 在本文中,我们将介绍...
  • 分析:主要原因是局部变量的数组没有进行数组的初始化工作,导致i=7及以后的申请空间分配随机数,所以在使用数组前要进行初始化,下面是总结关于数组初始化的一些问题。 以前我这样初始化一个数组,并自我感觉良好...
  • c c++ 数组初始化

    2019-03-10 15:26:00
    1.写个for循环,挨个赋值 2.memset函数,头文件 string.h 或者是cstring 3.int a[10]={0};对第一个元素赋值,后面也就都是0了,或者是直接int a[10]={ };也行(来源于算法笔记),赋值0或者-1,memset是对字节进行...
  • Java数组初始化

    2020-08-25 16:04:41
    Java数组初始化 //step1 声明数组 int[] array; //step2 创建数组对象 array = new int[10]; //step3 数组赋值 array[0] = 10; array[1] = 10; array[2] = 10; array[3] = 10; array[4] = 10; ... [外链图片转存...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,054
精华内容 2,821
关键字:

c数组初始化