c - 调用整数并使用函数将数字添加到用户输入崩溃的程序

标签 c arrays pointers

好的,所以我正在尝试让我的程序请求用户整数(一切正常),然后调用该函数,该函数将 5 添加到每个数组元素,我认为这很好吗?然后我需要在主程序中打印:原始整数加上 5。任何人看到什么是错的?我的程序崩溃了

#include <stdio.h>

void FUN(int ARR2[]);

int main()
{
  int i=0;
  int ARR1[20];
  printf("Please enter 20 integers.\n");

  for(i=0; i<20; i++) // switch back to 20
  {
    scanf("%i", &ARR1[i]);
  }

  FUN(&ARR1[i]);
  printf("The new numbers are: %i", ARR1[i]);

  return 0;
}

void FUN(int ARR2[])
{
    int i=0;
    ARR2[20];

    for(i=0;i<20;i++)
        ARR2[i]+=5;
}

最佳答案

当你到达这条线时

FUN(&ARR1[i]);

i 变量的值为 20,因此您正在访问 ARR 中的第 21 个元素,这可能会导致访问冲突。如果将此行替换为

FUN(ARR1);

并删除该行

ARR2[20];

从你的函数 FUN 你可能会得到你期望的行为

关于c - 调用整数并使用函数将数字添加到用户输入崩溃的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29519841/

相关文章:

c++ - 树c++的删除函数

c - C 中箭头运算符 (->) 的用法

c++ - 对于非数组对象类型来说,后一指针可以吗?

c - strcmp 未正确比较指向字符的指针数组中的 2 个相邻字符串

c - 了解多线程共享资源 : shmid, shmat、shmdt

c - 如何获取有关 C 函数调用者的信息?

java - 如何将字符串数组的 ArrayList 转换为二维字符串数组

c - 将数组传递给 C 中的线程例程

c - 停止 fscanf?

c - 避免蒙特卡罗模拟中的基本 rand() 偏差?