# Structs and Functions

We could have also written the point example by passing the point structs to the `getSlope` and `getIntercept` functions (instead of passing their fields). This works just like passing other variable types, except `struct point` will be an argument type. Here’s the example when we pass the points to the functions:

``````#include <stdio.h>

struct point {
int x;
int y;
}; //No variables declared here

double getSlope(struct point, struct point);
double getIntercept(struct point, double);

int main() {
struct point p1;
struct point p2;
double slope;
double intercept;

printf("Enter point1, e.g. (1, 2): ");
scanf("(%d, %d)", &(p1.x), &(p1.y));
printf("Enter point2, e.g. (1, 2): ");
scanf("(%d, %d)", &(p2.x), &(p2.y));

slope = getSlope(p1, p2);
intercept = getIntercept(p1, slope);

//prints equation in form y = mx + b
//m: slope, b: y-intercept
printf("y = %.2lfx + %.2lf\n", slope, intercept);

return 0;
}

double getSlope(struct point p1, struct point p2) {
//slope = change in y / change in x
return (p2.y-p1.y)/(p2.x-p1.x);
}

double getIntercept(struct point p, double slope) {
//if y = mx + b, b = y - mx
return p.y - slope*p.x;
}``````