So I was playing around with trying to do an integral using pointers. I've written what I'm trying to do already using arrays
Code:
#include <stdio.h>
#include <math.h>
#define RANGE 500 // Final temp = T0 + RANGE
int main()
{
int i, j, h = 1, T0 = 300;
float k300 = 148, alpha = -1.25;
float Temp[RANGE + 1], k[RANGE + 1], theta[RANGE];
float sum[RANGE], trap[RANGE - 1];
for (i = 0; i <= RANGE ; i++)
{
Temp[i] = i + T0;
k[i] = k300 * pow((Temp[i]/T0), alpha);
}
for (j = 0; j <= RANGE; j++)
{
trap[j] = 0.5*h*(k[j+1] + k[j]); // Trapezoidal Integration
sum[j] = sum[j-1] + trap[j];
if (j > 0)
{
theta[j] = T0 + (1/k300)*sum[j-1];
}
}
return 0;
}
which works just fine. Instead I want to try to go through it using pointers. Is there a good way to go through the first loop above, something like?
Code:
#include <stdio.h>
#include <math.h>
#define N 501 // Final temp = T0 + N
int main()
{
int T0 = 300;
float k300 = 148, alpha = -1.25;
float temp[N], kappa[N], theta[N -1];
float sum, trap[N - 1];
float *tl_i = temp, *tl_start = temp, *tl_end = (temp + N);
float *kappa_i = kappa, *kappa_end = (kappa + N), *kappa_start = kappa;
float *trap_i = trap, *trap_start = trap, *trap_end = (trap + N - 1);
float *kirch = theta;
for (tl_i; tl_i<tl_end ; ++tl_i)
{
*tl_i = (tl_i - tl_start) + T0;
*kappa_i = k300 * pow((*tl_i/T0), alpha);
}