我的程序有问题。 我想编写一个程序,在动态内存和用户输入数字上创建变量。
然后我想创建一个动态数组并使用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);
}
}
}
答案 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