消息关闭
    暂无新消息!

关于C语言数组的问题

问题作者 : 泰安dkb2017-08-02发布
下面是代码
#include <stdio.h>
void aranpo(const int array[],int array1[],int n);
int main(void)
{
int arr[5] = {4,6,2,3,9};
int arr1[5];
for(int i =0;i<5;i++)
printf("%d  ",arr1[5]);
putchar('\n');
aranpo(arr,arr1,5);
 for(int i =0;i<5;i++)
printf("%d  ",arr1[5]);
putchar('\n');
return 0;

void aranpo(const int array[],int array1[],int n)

{
for(int i = 0;i<n;i++)
{
array1[i] = array[i];
 } 


运行结果怎么会是 4 4 4 4 4
                              4 4 4 4 4
传递数组在函数中外面的数组会改变吗?如果改变为什么都变成4了而且一开始我并没有初始化arr1啊?
求解答

5个回答

︿ 3
你打印的一直是 arr1[5],所以输出的都是同一个值。而且 5 越界了,应该是 0-4,所以输出的值是什么应该是无法预测的。我的编译器结果就是输出 0.
︿ 2
int arr[5],实际上只有 arr1[0],arr1[1],arr1[2],arr1[3],arr1[4]五个元素,你用的arr1[5]已经超出了范围,显示的就不知道是什么了~~~

#include <stdio.h>
void aranpo(const int array[],int array1[],int n);
int main(void)
{
    int arr[5] = {4,6,2,3,9};
    int arr1[5];
    for(int i =0;i<5;i++)
    printf("%d  ",arr1[i]);
    putchar('\n');
    aranpo(arr,arr1,5);
     for(int i =0;i<5;i++)
    printf("%d  ",arr1[i]);
    putchar('\n');
    return 0;

void aranpo(const int array[],int array1[],int n)
 
{
    for(int i = 0;i<n;i++)
    {
        array1[i] = array[i];
     } 
     
︿ 2
循环变量没有用上呀

void aranpo(const int array[],int array1[],int n)
{
for(int i = 0;i<n;i++)
{
array1[i] = array[i];


int _tmain(int argc, _TCHAR* argv[])
{
int arr[5] = {4,6,2,3,9};
int arr1[5];
for(int i =0;i<5;i++)
printf("%d  ",arr[i]);
putchar('\n');
aranpo(arr,arr1,5);
for(int i =0;i<5;i++)
printf("%d  ",arr1[i]);
putchar('\n');
return 0;
}


︿ 1
传递数组作为参数实际上是指针对吧,也就是说可以在函数中修改原来的数据