zoukankan      html  css  js  c++  java
  • GCC 中零长数组,C99中的变长数组(VLA)

    GCC 中零长数组

    GCC 中允许使用零长数组,把它作为结构体的最后一个元素非常有用,下面例子出自 gcc 官方文档。

    struct line {
    int length;
    char contents[0];
    };

    struct line *thisline = (struct line *) malloc (sizeof (struct line) + this_length);
    thisline->length = this_length;

    C99中的变长数组

    1 #include<stdio.h>
     2 
     3 #define ROWS 3
     4 #define COLS 4
     5 
     6 int sum2d(int rows, int cols, int ar[rows][cols])
     7 {
     8     int i, j, sum;
     9     sum = 0;
    10 
    11     for(i = 0; i < rows; i++)
    12         for(j = 0; j < cols; j++)
    13             sum += ar[i][j];
    14     return sum;
    15 }
    16 
    17 int main()
    18 {
    19     int i, j;
    20     int junk[ROWS][COLS] = {
    21         {2, 4, 6, 8},
    22         {3, 5, 7, 9},
    23         {12, 10, 8, 6}
    24     };
    25 
    26     int morejunk[ROWS-1][COLS+2] = {
    27         {20, 30, 40, 50, 60, 70},
    28         {5, 6, 7, 8, 9, 10}
    29     };
    30     int rs = ROWS;
           int cs = COLS;
    31     int varr[rs][cs]; //变长数组
    32 
    33     for(i = 0; i < rs; i++)
    34         for(j = 0; j < cs; j++)
    35             varr[i][j] = i * j +j;
    36     printf("3 * 5 array
    ");
    37     printf("sum of all elemts = %d
    ",sum2d(ROWS, COLS, junk));
    38 
    39     printf("2 * 6 array
    ");
    40     printf("sum of all elemts = %d
    ",sum2d(ROWS - 1, COLS + 2, morejunk));
    41 
    42     printf("3 * 10 array
    ");
    43     printf("sum of all elemts = %d
    ",sum2d(rs, cs, varr));
    44 
    45     return 0;
    46 }
    
    

    https://www.cnblogs.com/cpoint/p/3368380.html

  • 相关阅读:
    iOS基础开发集锦
    ARC&&MRC 内存管理
    iOS博客 视频课程网站
    iOS 切图规范
    ipa 重新签名
    企业证书管理
    判断是否有权限访问相机,相册,定位
    iOS 项目优化
    自定义返回按钮
    SVN 地址
  • 原文地址:https://www.cnblogs.com/ims-/p/14041237.html
Copyright © 2011-2022 走看看