C lang: Compound literal

Xx_Introduction

  • C99 stantard.
  • Upate array and struct a compound literal.
  • Literal is date type value.In addition to symbolic constant a constant.

Ax_Code

#include<stdio.h>
#define COLS 4
int sum2d(const int ar[][COLS], int rows);
int sum  (const int ar[], int n);
int main(void)
{
    int total1, total2, total3;
    int *pt1; 
    int (*pt2)[COLS];

    pt1 = (int[]){10, 20};
    pt2 = (int[][COLS]){{1, 2, 3, -9},{4, 5, 6, -8}};

    total1 = sum(pt1, 2);
    total2 = sum2d(pt2, 2);
    total3 = sum((int []){4, 4, 4, 5, 5, 5}, 6);    //compound literal

    printf("total1 = %d
", total1);
    printf("total2 = %d
", total2);
    printf("total3 = %d
", total3);


    return 0;
}


int sum(const int ar [], int n)
{
    int i;
    int total = 0;

    for (i = 0; i < n; i++)
        total += ar[i];

    return total;
}

int sum2d(const int ar[][COLS],int  rows)
{
    int r;
    int c;
    int tot = 0;

    for (r = 0; r < rows; r++)
        for (c = 0; c < COLS; c++)
            tot = tot + ar[r][c];
    return tot;
}

total1 = 30
total2 = 4
total3 = 27
原文地址:https://www.cnblogs.com/enomothem/p/11937563.html