在c中指定一个等于另一个指针值的指针

时间:2014-03-30 00:20:02

标签: c pointers

我试图将我的指针(numProcesses)设置为等于我程序中输入的命令行参数(它是一个存储在argv [1]中的int值)。我的问题是如何让numProcess等于argv [1]值。每次我尝试不同的方式,我得到argv [1]的地址位置而不是其内容。我知道指针在大多数情况下是如何工作的。我没有问题让这个在c ++中工作,但我是C的新手,所以有一点点艰难的时间。以下是我的代码,我感谢任何帮助/提示,​​谢谢。

 void parentInfo(int *numProcesses);



int main (int argc, int *argv[])
{
  //Creates a command line argument that stores an integer
  int *numProcesses = (int *)malloc(sizeof(12));

  if (argc < 2)
    {
      printf("\n\nUsage: %s <enter a number (12 or less)>\n\n", argv[0]);
      exit (-1);
    }
  else
    {
      numProcesses = argv[1];

      printf("numProcesses =  %d", numProcesses);

      if(*numProcesses > 12 || *numProcesses < 1)
        {
          printf("\n\nUsage: %s <enter a number (12 or lrss)>\n\n", argv[0]);
        }
      else
        {
          parentInfo(numProcesses);
        }


}

return 0;
}

2 个答案:

答案 0 :(得分:0)

首先,argv[1]char *。没有“argv[1]的内容” - argv[1]是指向内存中某个位置的指针(如果我们幸运的话)包含一个字符串。

您实际需要的是将字符串转换为数字的方法。好吧,有atoi

numProcesses = atoi(argv[1]);

答案 1 :(得分:0)

#include <stdlib.h>

void parentInfo (int *numProcesses);

int main (int argc, char* argv[])
{
    int num = atoi (argv[1]);   // no error checking!
    parentInfo (&num);

    return 0;
}

如果您需要错误检查,请使用strtol代替atoi;你可能会这样。