c - 使用 C 中的函数初始化数组

标签 c arrays function function-pointers

我正在做类作业,我想我会问大家一个问题:

所以程序的目的是让用户输入数组的大小,然后用一些数据初始化它。最大大小为 20。我的问题是,当设置大小超过 14 并尝试初始化它时,数组会崩溃。因此,例如,如果它将大小设置为 20,它会接受它,但是当我尝试初始化它时,它会崩溃。我不知道我在做什么。非常感谢您的帮助。

非常感谢,

埃西

int main ()
{

     int sizeOfArray = 0; //size Of Array
     float myArray[sizeOfArray];

     //I have a piece a line or two of code that asks the user for the size of the    
       array

     printf("Let's Initialize an array of size %d!!\n", sizeOfArray);
     do
     {
           printf("Enter array element %d : ", initCounter+1);
           myArray[initCounter] = userInitArray();
           initCounter++;
      }while (initCounter < sizeOfArray);
}

float userInitArray()
{
      float num;
      scanf("%f", &num);
      return num;
}

最佳答案

这两行

 int sizeOfArray = 0; //size Of Array
 float myArray[sizeOfArray];

创建一个空数组。因此,无论您稍后尝试在此数组中存储什么,都会越界访问并调用未定义的行为。您的程序在第 14 次调用时崩溃的事实只是运气。它也可能在第一个上崩溃。

关于c - 使用 C 中的函数初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20057493/

相关文章:

函数中的 PHP Mysqli_real_escape_string 期望参数为 1。给定 Null

c++ - c/c++ | int * 除外,给定 int (返回指针??)

c# - 指向通用类型数组的指针?

c - 为什么 printf 中不同的数组解引用会给出相同的输出?

php - 用另一个数组重写数组的键

JavaScript 函数将无法工作

c++ - 使用对象的指针和引用作为函数参数是否更轻松?

c - for 循环上的多个 pragma 指令(C 和 VS 2013)

c - 在 stm32 微 Controller 上导入 zlib 给出错误 Type undefined reference to `gzclose'

c - 需要优化如下split()函数代码