从C

时间:2017-11-18 11:44:36

标签: c arrays pointers

我正在尝试编写一个程序,该程序调用一个函数,该函数创建一个包含随机数的数组,然后对它们进行排序。完成后我想将一个指向数组的指针返回给main函数。然后我想打印数组。如果我只是在数组中打印一个值,一切正常。但是,如果我打印多个值,我会得到一些其他值。这是主要功能:

int * createArr(){
    int arrLenth = 100;
    int arr[arrLenth];
    int i, j, temp, pos = 0;

    /*ASSIGNING ARRAY VALUES */
    for(i=0;i<arrLenth; i++){
        arr[i] = rand() % 900;
    }
    /* SORTING ARRAY */
    for(i = 0; i < arrLenth; i++){
        for(j = 0; j < arrLenth; j++){
            if(arr[j]>arr[j+1]){ 
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    /* PRINTING ARRAY*/
    for(i=0;i<arrLenth; i++){
        printf("%d, ", arr[i]);

    }
    int *parr = arr;
    //printf("\n%p", parr);
    return parr;
}
    int main() {
        int *p = createArr(); //pointer to the array

        printf("\n%d", *(p+1));
        printf("\n%d", *(p+1));

        return 0;
    }

这给了我输出:

45 (which is correct)
1771768448 (which is not correct)

造成这种情况的原因是什么?我打印两次完全相同的线,但得到不同的输出。还告诉我,如果你需要看到我创建数组的功能,我觉得不需要它,因为那里的一切都很好。

0 个答案:

没有答案