C ++中的链接器错误(再次)

时间:2015-10-11 19:17:04

标签: c++ arrays pointers

所以我需要一些帮助来为我的班级创建一个程序。实验室要求我们使用指针。 这是我们要做的事情的描述......

- 编写一个接受int数组且数组大小为参数的函数。 - 程序应该询问数组的大小,并让用户输入一些整数值。 - 该函数应该创建一个比参数数组大一个元素的新数组。 - 数组的第一个元素应设置为0。 - 参数数组的元素0应该被复制到新数组的元素1中。 - 参数数组的元素1应该被复制到新数组的元素2等。 - 该函数应返回指向新数组的指针。 - 应该有三个其他功能:getMode,getMedian和getAverage。 - 这些函数应该获得数组中值的模式,中值和平均值。 - 你应该显示参数数组和新数组以及模式,中位数和平均值。

这是我到目前为止我不确定它是否正确。任何帮助是极大的赞赏。 更新:我运行程序,它询问用户数组的大小及其值......

#include <iostream>
#include <cmath>
#include <cstdlib>
#include <string>

int* addToSize (int*, int);

using namespace std;


int main()
{   

    int userSize=0; //Holds user size
    int userInts; //Holds uaer values
    int *memory; //dynamically allocate an array


    //int  *intptr;
    //int *arrayNew;
    //int newA;

    //Gets array size
    cout << "Please enter the array size!" << endl;
    cin >> userSize; 

    //Memory array 
    memory = new int [userSize];

    //Grab values for the amount of user size 
    for (int count = 0; count < userSize; count ++)
    {
        cout << "Please enter the value for " << count+1 << endl;
        cin >> userInts;
    }


    for (int index = 0; index < userSize; index ++)
    {
        cin >> memory[index];
    }

    //Sets addToSize function to memory array
    memory = addToSize(memory, userSize);

   //Shows memory array
    for(int index=0;index< (userSize + 1);index++)
        cout<<memory[index]<<endl;

    delete[] memory;    //Used to delete memory array
    memory = 0; //sets memory array to 0

    return 0;

}


    int* addToSize(int* arrayNew, int newSize) 
{
    int* expandSize= new int [newSize +1];

    for (int index = 0; index < newSize; index++)
    {
        expandSize[index]= arrayNew[index];
    }
    for (int index = newSize; index < (newSize+1); index ++) 
    {
        expandSize[index]=0;
    }   
    return expandSize;
}

1 个答案:

答案 0 :(得分:0)

你已经声明对某个addToSize()函数的前向引用,该函数接受2个参数,然后从main()开始调用它,这一切都非常好,花花公子,但接下来你定义一个addToSize()接受3个参数。

所以,发生的事情是声明的函数与定义的函数无关。编译器完全忽略了3参数函数,因为你没有调用它,它假定你将在其他一些源文件中提供双参数函数的定义。

但是当链接器尝试链接您的程序时,没有其他文件包含带有两个参数的addToSize(),因此链接器失败并显示错误消息,该消息准确描述了发生的情况。 (这是一个链接器错误。它与指针和数组无关。)

提示:在修复函数定义以匹配声明之前,丢失前向声明,将函数移动到文件的开头,并使其成为static