fout: indirectie vereist pointer operand (‘int’ ongeldig)

Het doel van deze code is om een virtueel adres in decimalen door te geven en het paginanummer en de offset uit te voeren.

Nadat ik mijn code heb gecompileerd met de gcc-compiler op Linux, krijg ik deze foutmelding:

indirection vereist pointer operand (‘int’ ongeldig)
virtualAddress = *atoi(argv[1]);

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
#include <curses.h>
int main(int argc,char *argv[])
{
     unsigned long int virtualAddress,pageNumber,offset;
     if(argc<2){
          printf(" NO ARGUMNET IS PASSED");
          return 0;
     }
    virtualAddress = *atoi(argv[1]);
     //PRINT THE VIRTUAL ADDRESS
    printf("The Address %lu contains:",virtualAddress);
    //CALCULATE THE PAGENUMBER
    pageNumber = virtualAddress/4096;
     //PRINT THE PAGE NUMBER
    printf("\n Page Number = %lu",pageNumber);
    //FIND THE OFFSET
    offset = virtualAddress%4096;
    //PRINTS THE OFFSET
    printf("\n Offset = %lu",offset);
     getch();
    return 0;
}

Antwoord 1, autoriteit 100%

Deze fout treedt op wanneer u een aanwijzer naar uw variabele wilt maken door *my_varin plaats van &my_var.


Antwoord 2, autoriteit 60%

virtualAddress = *atoi(argv[1]);

atoi-functie retourneert int(niet int *dus het is niet nodig om de retourwaarde te verbreken) en u probeert om intte dereferenteren, geeft de compiler daarom een fout.

Als je het nodig hebt in unsinged long intgebruik strtoul

char * p;
virtualAddress = strtoul(argv[1], &p,10);

Other episodes