动态内存(calloc)和指针指针[C]

时间:2016-04-09 16:20:14

标签: c arrays function pointers

我的程序有问题。 我想编写一个程序,在动态内存和用户输入数字上创建变量。

然后我想创建一个动态数组并使用varible到tha数组的大小,但是我看到了一个错误。  为什么?我该如何解决?

问题在于:int* numbersArr = (int*)malloc(sizeof(int) * (*number));

感谢。

#include <stdlib.h>
#include <stdio.h>
void FirstFunc();
void secondFunc(int* number);

int main(void)
{
  FirstFunc();

  getchar(); 
  return 0;
}

  void FirstFunc()
  {
    int* number = (int*)malloc(sizeof(int));
     // check
     if (!(number = (int*)malloc(sizeof(int))))
  {
     printf("Unsuccessful malloc!/ n");
      return 1;
   }

     printf("Enter any number:");
     scanf("%d", &number);
     printf("%d", number);

     secondFunc(number);
 }

    void secondFunc(int* number)
     {
        int i = 0;
         int* numbersArr = (int*)malloc(sizeof(int) * (*number));
         // check
         if (!(numbersArr = (int*)malloc(sizeof(int))))
         {
            printf("Unsuccessful malloc!/ n");
            return 1;
          }
          if (numbersArr)
          {
            for (i = 0; i < numbersArr + 1; i++)
          {
             scanf("%d", number);
          }
          }



         }

1 个答案:

答案 0 :(得分:0)

您的代码中存在一些错误。

首先:您正在FirstFunc()创建指针并为其分配内存。要输入它,请不要使用&amp; number

 scanf("%d", number);
 printf("%d", *number);

第二:secondFunc() numberArr是一个数组,你不能将它循环为numberArr + 1,而应该是

for (i = 0; i < *number; i++) {
    scanf("%d", &numbersArr[i]);
}

要查看正在运行的演示,请访问此link