Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Getting the error: invalid type argument of unary ‘*’ (have ‘double’)

I tried to troubleshoot this and couldn’t find the exact problem as to why I’m getting this error(error: invalid type argument of unary ‘*’ (have ‘double’)
*outerD_P = outerD;) . I tried making innerD_P and outerD_P a ** but that didn’t work. I’m sorry if it’s a simple fix I’m still learning C. Thank you for the help

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// PI is the ratio of diameter to the circumfrence of a circle
#define PI 3.1415


int main(int argc, const char *argv[])
{

  double weight, volume, batchWeight, innerA, outerA, area;
  double innerD, outerD, density, thickness;
  double* volume_P, density_P, innerA_P, outerA_P, area_P, thickness_P;
  double* innerD_P, outerD_P;
  int quantity;
  int* quantity_P;


  //variables that point to the corresponding command line arguments beleow:
  innerD = atof(argv[1]);
  outerD = atof(argv[2]);
  thickness = atof(argv[3]);
  density = atof(argv[4]);
  quantity = atoi(argv[5]);

  //Not allowing the user to enter a 0 for quantity must have atleast ONE washer
  if(quantity < 1)
  {
    printf("Quantity can not be less than 1! Try again\n.");
    return 0;
  }

  //setting the pointer equal to the command line input
   *innerD_P = innerD;
   *outerD_P = outerD;

    innerA = PI*pow(*innerD_P/2, 2);
    outerA = PI*pow(*outerD_P/2, 2);

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

double* volume_P, density_P, innerA_P, outerA_P, area_P, thickness_P;
double* innerD_P, outerD_P;

In those lines the * only binds to the next variable. It means that the above is actually declaring only the first variable on each line as a pointer and all the rest are double.

Change to:

double *volume_P, *density_P, *innerA_P, *outerA_P, *area_P, *thickness_P;
double *innerD_P, *outerD_P;
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading