错误:间接需要指针操作数('int'无效)

时间:2016-07-07 04:01:13

标签: c

此代码的目的是传递十进制的虚拟地址并输出页码和偏移量。

在Linux上使用gcc编译器编译代码后,我收到此错误:

  

间接需要指针操作数('int'无效)         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;

}

2 个答案:

答案 0 :(得分:1)

virtualAddress = *atoi(argv[1]);

atoi函数返回int(不是int * ,因此无需取消引用返回值)并尝试取消引用int,因此,编译器给出错误。

您需要unsinged long int使用strtoul -

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

答案 1 :(得分:0)

当您想通过*my_var而不是&my_var创建指向变量的指针时,就会发生此错误。