====== Variable-Length Array Parameters (C99) ======
#include
int main(void)
{
int n = 1;
do {
int a[n]; // re-allocated 10 times, each with a different size
printf("The array has %2ld elements\n", sizeof(a)/sizeof(*a)); // %2zu ???
} while(n++ < 10);
return 0;
}
#include
int sum_array(int n, int a[n]);
//int sum_array(int n, int a[]);
//int sum_array(int n, int a[*]);
//int sum_array(int, int [*]);
//int sum_array(int, int []);
int main()
{
int arr[] = {1, 2, 3, 4, 5};
printf("Total = %d\n", sum_array(5, arr));
return 0;
}
int sum_array(int n, int a[n]) // order of parameters matter
{
int sum = 0;
while(n-- > 0)
sum += a[n];
return sum;
}
#include
int sum_array(int n, int m, int a[n][m]);
//int sum_array(int n, int m, int a[][m]);
//int sum_array(int n, int m, int a[*][*]);
//int sum_array(int n, int m, int a[][*]);
int main()
{
int arr[3][5] = {
{1, 2, 3, 4, 5},
{10, 20, 30, 40, 50},
{100, 200, 300, 400, 500}
};
printf("Total: %d\n", sum_array(3, 5, arr));
return 0;
}
int sum_array(int n, int m, int a[n][m]) // order of parameters matter
{
int sum = 0;
while(n-- > 0)
for(int i = 0; i < m; i++)
sum += a[n][i];
return sum;
}
#include
void concatenate(int n, int a[n], int m, int b[m], int c[n+m]);
//void concatenate(int n, int a[*], int m, int b[*], int c[*]);
//void concatenate(int n, int a[], int m, int b[], int c[]);
//void concatenate(int, int [], int, int [], int []);
int main()
{
int x[5] = {1, 2, 3, 4, 5};
int y[3] = {100, 200, 300};
int z[8] = {0};
concatenate(5, x, 3, y, z);
for(int i = 0; i < 8; i++)
printf("%d ", z[i]);
printf("\n");
return 0;
}
void concatenate(int n, int a[n], int m, int b[m], int c[n+m]) // order of parameters matter
{
int k = 0;
for(int i = 0; i < n; i++, k++)
c[k] = a[i];
for(int i = 0; i < m; i++, k++)
c[k] = b[i];
}